Élément <anyAttribute> XSD
- Page précédente XSD <any>
- Page suivante Remplacement d'éléments XSD
L'élément <anyAttribute> nous permet d'étendre le document XML par des attributs non spécifiés par le schéma !
L'élément <anyAttribute>
L'élément <anyAttribute> nous permet d'étendre le document XML par des attributs non spécifiés par le schéma !
L'exemple suivant est une partie d'un schéma XML nommé "family.xsd". Il nous montre une déclaration pour l'élément "person". En utilisant l'élément <anyAttribute>, nous pouvons ajouter un nombre quelconque d'attributs à l'élément "person":
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> <xs:anyAttribute/> </xs:complexType> </xs:element>
Maintenant, nous espérons étendre l'élément "person" via l'attribut "gender". Dans ce cas, nous pouvons le faire, même si l'auteur de ce schéma n'a jamais déclaré d'attribut "gender".
Voyons ce fichier de schéma, nommé "attribute.xsd":
<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.codew3c.com" xmlns="http://www.codew3c.com" elementFormDefault="qualified"> <xs:attribute name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:schema>
ci-dessous cette XML (nommée "Myfamily.xml"), utilise des composants provenant de différents schémas, "family.xsd" et "attribute.xsd":
<?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns="http://www.microsoft.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:SchemaLocation="http://www.microsoft.com family.xsd http://www.codew3c.com attribute.xsd"> <person gender="female"> <firstname>Jane</firstname> <lastname>Smith</lastname> </person> <person gender="male"> <firstname>David</firstname> <lastname>Smith</lastname> </person> </persons>
Ce fichier XML est valide car le schéma "family.xsd" nous permet d'ajouter des attributs à l'élément "person".
Les éléments <any> et <anyAttribute> peuvent tous deux être utilisés pour créer des documents extensibles ! Ils permettent aux documents de contenir des éléments supplémentaires non déclarés dans le schéma XML principal.
- Page précédente XSD <any>
- Page suivante Remplacement d'éléments XSD