Xml 自定义SOAP1.1标头和mustUnderstand属性

Xml 自定义SOAP1.1标头和mustUnderstand属性,xml,web-services,soap,xsd,axis,Xml,Web Services,Soap,Xsd,Axis,My WebService(采用SOAP 1.1规范的编译器)使用自己在xsd中定义的头类型MyHeader,如下所示: <xs:complexType name="MyHeader"> <xs:sequence> <xs:element name="MyElement1" type="xs:string"></xs:element> <xs:element name="MyElement2" type="

My WebService(采用SOAP 1.1规范的编译器)使用自己在xsd中定义的头类型MyHeader,如下所示:

<xs:complexType name="MyHeader">
    <xs:sequence>
       <xs:element name="MyElement1" type="xs:string"></xs:element>
       <xs:element name="MyElement2" type="xs:string"></xs:element>
    </xs:sequence>
</xs:complexType>

不幸的是,“由AXIS 1.4 framework”生成的SAOP消息包含MyHeader元素,该元素包含mustUnderstand=“0”属性:

<ns:MyHeader soapenv:mustUnderstand="0" xmlns:ns="http://....">
   <ns:MyElement1>XXX</ns:MyElement1>
   <ns:MyElement2>YYY</ns:MyElement2>
</ns:MyHeader>

XXX
YYY
根据规范,可以将SOAP mustUnderstand添加到每个标头。然而,在我看来,这样定义的元素MyHeader不能包含这个属性,因为生成的XML与XML规范不兼容——它不符合cvc复杂类型的XML规则

是否允许将mustUnderstand属性添加到此标头实例?
AXIS framework 1.4是否正常工作?

长话短说,请搜索“从标题中删除mustUnderstand属性”,这应该会为您提供解决方案;默认情况下,不应添加此标题;如果您需要实际使用它,那么我将修改头部部分的模式以包括这些SOAP属性;如果你想看一个例子,请看一下(remove use=“违禁”)。

我知道这里有一些技术可以在生产者和消费者方面删除此属性。但重要的问题是:放置mustUnderstand是允许的,并且符合规范SOAP/XML吗?即使xsd包含use=“违禁”?@Max,也不能添加此属性;是的,mustUnderstand允许用于文字(与编码相反);此空间中的最佳实践是确保头类型从允许anyAttribute namespace=“##other”processContent=“lax”的“attributed”基类型扩展。@Petru有这样一个扩展的常规类型示例吗?我曾尝试将namespace=“##other”和processContent=“lax”的anyAttribute直接添加到我自己的头类型中,但这并没有解决我的问题。