Mon WebService (compilant avec la spécification SOAP 1.1) utilise son propre type d'en-tête MonEntête défini dans le xsd comme suit:personnalisée en-tête SOAP 1.1 et attribut mustUnderstand
<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>
Malheureusement SAOP message généré « par AXIS 1.4 cadre » a MonEntête élément contenant mustUnderstand = "0" attribut:
<ns:MyHeader soapenv:mustUnderstand="0" xmlns:ns="http://....">
<ns:MyElement1>XXX</ns:MyElement1>
<ns:MyElement2>YYY</ns:MyElement2>
</ns:MyHeader>
Selon t o spécification SOAP mustUnderstand peut être ajouté à chaque en-tête. Cependant, il me semble que les éléments définis MyHeader ne peuvent pas contenir cet attribut, car le XML résultant est incompatible avec la spécification XML - il ne valide pas les règles XML de cvc-complex-type.
Est-il autorisé d'ajouter mustUnderstand attribut à cette instance d'en-tête? Est-ce qu'AXIS framework 1.4 fonctionne correctement?
Je sais que voici des techniques pour supprimer cet attribut sur les côtés producteur et consommateur. Mais une question importante est: mettre mustUnderstand est autorisé et conforme à la spécification SOAP/XML? Cet attribut peut-il être ajouté même si xsd contient use = "prohibited"? – Max
@ Max, il ne devrait pas; oui, mustUnderstand est autorisé pour littéral (par opposition à codé); La meilleure pratique dans cet espace est de s'assurer que vos types d'en-tête s'étendent à partir d'un type de base "attribué" qui permet à anyAttribute namespace = "## other" processContent = "lax". –
@Petru Existe-t-il un exemple classique d'un tel type d'extension? J'ai essayé d'ajouter un anyAttribute avec namespace = "## other" et processContent = "lax" à mon propre type d'en-tête directement, mais cela n'a pas résolu le problème pour moi. – Eric