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.