XSD L' élément <any>
L'élément <any> nous permet d'étendre le document XML avec des éléments non spécifiés par le schéma !
L'élément <any>
L'élément <any> nous permet d'étendre le document XML avec des éléments 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 <any> nous pouvons étendre (après <lastname>) le contenu de "person" avec n'importe quel élément :
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:any minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Maintenant, nous voulons étendre l'élément "personne" avec un élément "enfants". Dans ce cas, nous pouvons le faire, même si l'auteur du schéma ci-dessus n'a jamais déclaré d'élément "enfants".
Regardez ce fichier de schéma, appelé "children.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:element name="children">
<xs:complexType>
<xs:sequence>
<xs:element name="childname" type="xs:string"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Le fichier XML ci-dessous (appelé "Myfamily.xml"), utilise des composants de deux schémas différents ; "famille.xsd" et "enfants.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 children.xsd">
<person>
<firstname>Hege</firstname>
<lastname>Refsnes</lastname>
<children>
<childname>Cecilie</childname>
</children>
</person>
<person>
<firstname>Stale</firstname>
<lastname>Refsnes</lastname>
</person>
</persons>
Le fichier XML ci-dessus est valide car le schéma "family.xsd" nous permet d'étendre l'élément "person" avec un élément optionnel après l'élément "lastname".
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.