J'ai XML qui comprend un élément qui a l'attribut: xsi: type = "AnswerBool". Mon xsd a cet élément et a mis en place un attribut avec le nom = "type", puis restreint les valeurs d'énumération à "AnswerBool" (et autres). Cependant, lorsque j'essaie de valider le XML, il échoue. Si je change le XML pour que l'élément utilise le type plutôt que xsi: type tout va bien.L'élément XML avec l'attribut "xsi: type" ne valide pas. Il attend un attribut "type"
XML:
<Answer xsi:type="AnswerBool">
-1
XSD:
<xs:element name="Answer" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Value">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="type">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="xsd:int"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="type" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="AnswerBool"/>
<xs:enumeration value="AnswerMsc2DTO"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
J'ai essayé de nommer le "type" attribut "xsi: type" mais je ne suis pas autorisé à avoir un ':' dans le nom. Malheureusement, je ne peux pas mettre à jour le XML pour ne pas utiliser "xsi:" avant "type". Je sais ce que je fais est fondamentalement une sorte de travail autour de permettre plusieurs types différents pour mon élément "Réponse". Donc, je pourrais pousser les choses trop loin pour que tout cela fonctionne. Cependant ...
Est-ce que quelqu'un a des idées sur comment valider mon XML? Je veux dire est-il possible d'inclure le "xsi:" dans le nom de mon attribut ou peut-être y at-il un moyen de faire que le processus de validation regarde la partie "type" et ignore le "xsi:"?
Je ne suis pas sûr de comprendre ce que vous voulez dire. L'instance de l'élément racine XML est déjà définie pour http://www.w3.org/2001/XMLSchema-instance. Suis-je censé ajouter d'une manière ou d'une autre ce xsi au schéma? – Eves
Bon, et est le préfixe utilisé avec cet espace de noms aussi xsi? Si c'est le cas, regardez le fait que l'élément Answer n'est pas effectivement déclaré comme ayant un type "xsi" (peut-être est-il simplement déclaré comme "rien" (ie avec le type par défaut xmlns, actualy). alors voyez que l'attribut type pour les nœuds Answer utilise ce préfixe particulier – mjv
Rien ne semble fonctionner pour moi Les instances de mon schéma sont toutes les mêmes et il y a toujours un problème, je vais devoir passer cette méthode. l'aide si – Eves