A ont un schéma XSD qui décrit un objet XML (exemple simplifié):Est-il possible d'ajouter une nouvelle balise XML afin qu'elle soit transparente pour une validation XSD?
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://my-custom-ns.com">
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element name="active" type="xs:boolean"/>
<xs:element name="value" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Ce schéma est intégré dans une application comme une ressource et installé sur plusieurs postes de travail. L'application consomme des fichiers XML et les valide par rapport à ce schéma. Voici un (simplifié) exemple d'un tel XML:
<my:item xmlns:my="http://my-custom-ns.com">
<active>true</active>
<value>foo</value>
</my:item>
Maintenant, je veux que mes fichiers XML pour obtenir un nouvel élément (une nouvelle étiquette) sans changer le XSD:
<my:item xmlns:my="http://my-custom-ns.com">
<active>true</active>
<value>foo</value>
<tag>bar</tag>
</my:item>
I ne change pas le XSD, donc évidemment la validation échoue sur une nouvelle étiquette. Existe-t-il un moyen d'avoir une nouvelle balise dans le fichier XML afin qu'elle "traverse" la validation de manière transparente (c'est-à-dire qu'elle soit complètement ignorée)?
J'ai essayé d'ajouter un nouvel espace de noms dans le fichier XML dans l'espoir que la validation XSD ignorera, mais cela n'a pas aidé:
<my:item xmlns:my="http://my-custom-ns.com" xmlns:new="http://new-ns.com">
<active>true</active>
<value>foo</value>
<new:tag>bar</new:tag>
</my:item>
L'arrière-plan est le suivant: il devrait être possible pour l'application actuelle version pour traiter les fichiers XML qui ont un tag supplémentaire, simple en l'ignorant. Mais l'application a une forte validation contre un XSD, comme je l'ai décrit ci-dessus. Peut-être qu'il y a une autre façon de le faire?
Comment votre application verrait-elle ce nouvel élément s'il se trouvait dans un espace de noms différent? Je crois que cela n'est guère possible sans modification du schéma. –
@AlexeyR., L'espace de noms était juste un exemple (malchanceux). En fait, j'ai besoin d'un moyen de rendre une balise totalement transparente à la validation XSD par rapport à un schéma qui n'autorise pas explicitement les balises * undefined *. Semble être impossible, j'ai peur. – dymanoid