Comment puis-je obtenir de bonnes valeurs d'éléments uniques dans un schéma XML?
Question
Je veux assurer qu'il n'y a pas de titres en double livre dans le fichier XML suivant:
<?xml version="1.0" encoding="UTF-8"?>
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="books3.xsd">
<book>
<title>Book1</title>
</book>
<book>
<title>Book2</title>
</book>
<book>
<title>Book1</title> <!-- duplicate should not be allowed -->
</book>
</books>
J'utilise le schéma suivant:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="books">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="book"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="testUnique">
<xs:selector xpath="book"/>
<xs:field xpath="title"/>
</xs:unique>
</xs:element>
<xs:element name="book">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="title" type="xs:NCName"/>
</xs:schema>
éditeur XML oXygen me dit ceci est valable quand je valide.
Quelqu'un peut-il voir ce que je fais mal?
La solution
le schéma semble correct et doit détecter le double. peut être un bug dans l'oxygène?
vous pouvez essayer ce site pour valider votre xml: http://www.xmlvalidation.com
et vous verrez qu'il trouve des erreurs dans votre XmlDocument:
Dupliquer valeur unique [Class1] déclarée pour la contrainte d'identité élément "livres"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow