Comment puis-je définir un attribut booléen qui peut être défini "vrai" seulement dans un élément. Après l'extraicement doit être invalide.
<products> <product featured="yes">Prod 1</product> <product featured="yes">Prod 2</product> </products>
5 Réponses :
Vous ne pouvez pas faire cela avec des schémas XML. P>
Vous pouvez définir des attributs sur un élément, mais ne les limitez pas à une instance de l'élément. P>
Vous pouvez ajouter un attribut dans produits code> indiquant quel
produit code> est présenté. p>
@Aoi Karasu: Je pense que ça vérifie que ce n'est certainement pas possible
Vous ne pouvez pas faire cela avec xmlschema. Si vous souhaitez spécifier ces contraintes dans un environnement XML, essayez Schematron ( http://www.schematron.com/). P>
Ma réponse est comme ça, car je ne peux pas encore ajouter de commentaires.
"Vous pouvez ajouter un attribut dans l'élément de produits indiquant quel produit est en vedette." P>
Cette solution mène à un autre problème: Vérification si l'attribut pointe sur l'élément existant. p>
S'assurer que FeatureD_ID code> Les points d'attribut à un élément existant sont possibles via
xs: clé code> et
xs: keyrf code>. En voir plus ici ( daTypic.com/books/defxmlschema/chapter17.html )
Vous pouvez faire ce qui suit ...
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="products"> <xs:complexType> <xs:sequence> <xs:element name="product" type="productType" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:unique name="UniqueFeaturedProduct"> <xs:selector xpath="product"/> <xs:field xpath="@featured"/> </xs:unique> </xs:element> <xs:simpleType name="featuredType"> <xs:restriction base="xs:string"> <xs:enumeration value="Yes"/> </xs:restriction> </xs:simpleType> <xs:complexType name="productType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="featured" type="featuredType" use="optional"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:schema>
Je ne crois pas que cela soit possible avec le schéma XML.