XSD L' élément <anyAttribute >
L'élément <anyAttribute> nous permet d'étendre le document XML avec 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 avec des attributs non spécifiés par le schéma.
L'exemple suivant est un fragment d'un schéma XML appelé "family.xsd". Il affiche une déclaration pour l'élément "personne". En utilisant l'élément <anyAttribute> nous pouvons ajouter n'importe quel nombre 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 voulons étendre l'élément "person" avec un attribut "eyecolor". Dans ce cas, nous pouvons le faire, même si l'auteur du schéma ci-dessus n'a jamais déclaré d'attribut "eyecolor".
Regardez ce fichier de schéma, appelé "attribute.xsd":
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://www.w3schools.com"
xmlns="https://www.w3schools.com"
elementFormDefault="qualified">
<xs:attribute name="eyecolor">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="blue|brown|green|grey"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:schema>
Le fichier XML ci-dessous (appelé "Myfamily.xml"), utilise des composants de deux schémas différents ; "famille.xsd" et "attribut.xsd":
<?xml version="1.0" encoding="UTF-8"?>
<persons xmlns="http://www.microsoft.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:SchemaLocation="http://www.microsoft.com family.xsd
https://www.w3schools.com attribute.xsd">
<person eyecolor="green">
<firstname>Hege</firstname>
<lastname>Refsnes</lastname>
</person>
<person eyecolor="blue">
<firstname>Stale</firstname>
<lastname>Refsnes</lastname>
</person>
</persons>
Le fichier XML ci-dessus est valide car le schéma "family.xsd" nous permet d'ajouter un attribut à l'élément "person".
Les éléments <any> et <anyAttribute> sont 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.