If this body is correct depends on your wsdl your example is almost valid, but I don't know if it is a correct request according to the wsdl
technically you made two mistakes.
1, you have never closed the ns1:Contact element,
2 ns1:BatchUpdateModifierxsi:nil="true" i think you forgot the space between BatchUpdateModifier and the term xsi:nil="true"
besides that it looks ok, hower I suggesst that you wont use a fixed namespace in those xml elements. In al elements you state that they are defined in namespace ns1. Usually the xas will call the default namespace ns1 but that is no guarantee. If the xas want's to use a different namespace your request is suddenly invalid.
Like I answered in an earlier question it is better if you define the targetnamespace in the first element of your response and remove all the ns1 elements
The XML of your SOAP message is correct (regarding the mandatory attributes, I did not check the other parts), you ARE providing the obliged attribute. However, it depends on the implementation of the receiving party whether empty values are accepted or not.