Un autre défi de la capacité du XSD,
J'ai envoyé des fichiers XML par mes clients, qui auront des balises inattendues de 0 ou plus indéfinies ou [appelle] (peut apparaître dans la hiérarchie). Eh bien, ils sont des tags redondants pour moi .. Donc, je dois ignorer leur présence, mais avec eux, il y a un ensemble de tags qui doivent être validés.
Ceci est un exemple XML: P>
<xs:element name="root" type="root"></xs:element> <xs:complexType name="root"> <xs:sequence> <xs:any maxOccurs="2" minOccurs="0"/> <xs:element name="node" type="xs:string"/> <xs:any maxOccurs="2" minOccurs="0"/> </xs:sequence> </xs:complexType
5 Réponses :
Peut-être que c'est possible d'utiliser des espaces de noms: Ceci sera probablement validera probablement. p> p>
Bien pensé [+1] .. mais malheureusement ne fonctionne pas dans mon cas. merci pour la réponse. :-)
Conclusion: P>
Ceci n'est pas possible avec XSD. Toutes les approches que j'essayais d'atteindre l'exigence ont été nommées «ambiguës» par des outils de validation, accompagnant des erreurs d'erreurs. P>
Si vous n'êtes pas déjà fait avec ceci, vous pouvez essayer ce qui suit: sous Linux, cela fonctionne bien avec Xmllint en utilisant libxml version 20706. P> P>
Cependant, cela n'autorise toujours pas le premier élément d'être! :(
Quel est exactement le problème, s'il vous plaît?
C'est l'erreur que je reçois: wildcard '## tout "permet à" nœud "de l'élément et provoque le modèle de contenu ambigu. Alors et donc b>
Cela ressemble à un problème de conceptuel. Pour plus de détails, voir ici: w3.org/tr/xmlschema-1/# Cos-Nonambig Un fait intéressant pour moi est que des outils évidemment différents gèrent ce cas différemment. Comme je l'ai écrit, la solution fournit par mon travail avec les outils mentionnés.
Bien. Merci pour l'info et votre temps précieux :) Il a été utile que je ne puisse pas en mettre en œuvre Coz, je n'ai à traiter qu'avec .net :)
J'ai fait face au même problème.
Puisque j'ai appelé la validation de .net; J'ai décidé de supprimer l'erreur de validation spécifique dans Il est important que validationEventhandler >
thread.currenttuiculture code> doit être défini sur l'anglais ou
cultureinfo.invarianTculture code> pour le fil actuel pour que cela fonctionne. p> p>
Vous pouvez utiliser une nouvelle fonctionnalité dans XML 1.1 appelé "contenu ouvert". En bref, il vous permet de spécifier que des éléments "inconnus" supplémentaires peuvent être ajoutés à un type complexe dans diverses positions et ce que l'analyseur devrait faire s'il frappe l'un de ces éléments.
Utilisation de XML 1.1, votre type complexe serait devenir: p> Si vous avez beaucoup de types complexes, vous pouvez également définir un mode de contenu ouvert "par défaut" en haut de votre schéma: p> <xs:schema ...>
<xs:defaultOpenContent mode="interleave">
<xs:any namespace="##any" processContents="skip"/>
</xs:defaultOpenContent>
...
</xs:schema>
Le problème n'est-il pas valide contre le schéma?
yup .. plutôt je voulais montrer que "je ne sais pas comment le faire .. et j'ai essayé ça" ..