XSD <anyAttribute>Élément
L'élément <anyAttribute> nous permet d'étendre des documents XML avec des attributs non spécifiés par le schéma !
L'élément <anyAttribute> nous permet d'étendre des documents XML avec des attributs non spécifiés par le schéma !
L'exemple suivant est un fragment 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: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 voulons étendre l'élément "person" avec un 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".
Regardez ce fichier de schéma, nommé "attribute.xsd" :
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.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>
Le fichier XML suivant (nommé "Myfamily.xml") utilise des composants de différents schémas, "family.xsd" et "attribute.xsd" :
<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.w3schools.com attribute.xsd">
<person gender="female">
<firstname>Hege</firstname>
<lastname>Refsnes</lastname>
</person>
<person gender="male">
<firstname>Stale</firstname>
<lastname>Refsnes</lastname>
</person>
</persons>
Le fichier XML ci-dessus est valide parce que le schéma "family.xsd" nous permet d'ajouter des attributs à l'élément "person".
Tant <any> que <anyAttribute> peuvent être utilisés pour créer des documents extensibles ! Ils permettent aux documents de contenir des éléments supplémentaires qui ne sont pas déclarés dans le schéma XML principal.
Autres extensions