XSD - <any>

L'élément <any> est utilisé pour étendre la fonctionnalité XSD. Il est utilisé pour étendre un élément complexType défini dans un XSD par un élément qui n'est pas défini dans le schéma.

Prenons un exemple - person.xsd a défini personÉlément complexType. address.xsd a définiaddress Élément complexType.

person.xsd

<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"
   targetNamespace = "http://www.tutorialspoint.com"
   xmlns = "http://www.tutorialspoint.com"
   elementFormDefault = "qualified">
   
   <xs:element name = "person">
      <xs:complexType >
         <xs:sequence>
            <xs:element name = "firstname" type = "xs:string"/>
            <xs:element name = "lastname" type = "xs:string"/>
            <xs:element name = "nickname" type = "xs:string"/>     
         </xs:sequence>
      </xs:complexType>
   </xs:element>
	
</xs:schema>

address.xsd

<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"
   targetNamespace = "http://www.tutorialspoint.com"
   xmlns = "http://www.tutorialspoint.com"
   elementFormDefault = "qualified">
   
   <xs:element name = "address">
      <xs:complexType>
         <xs:sequence>
            <xs:element name = "houseNumber" type = "xs:string"/>
            <xs:element name = "street" type = "xs:string"/>
            <xs:element name = "state" type = "xs:string"/>    
            <xs:element name = "zipcode" type = "xs:integer"/>   	  
         </xs:sequence>
      </xs:complexType>
   </xs:element>

</xs:schema>

Si nous voulons définir une personne avec une adresse en XML, la déclaration suivante sera invalide.

person.xml

<?xml version = "1.0"?>
<class xmlns = "http://www.tutorialspoint.com"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.tutorialspoint.com person.xsd
   http://www.tutorialspoint.com address.xsd">  

   <person>
      <firstname>Dinkar</firstname>
      <lastname>Kad</lastname>
      <nickname>Dinkar</lastname>
   
      <address>
         <houseNumber>101</firstname>
         <street>Sector-1,Patiala</lastname>
         <state>Punjab</lastname>
         <zipcode>301202<zipcode>
      </address>
   
   </person>
	
</class>

Utilisez <xs: any>

Afin de valider ci-dessus person.xml, ajoutez <xs: any> à l'élément person dans person.xsd.

person.xsd

<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"
   targetNamespace = "http://www.tutorialspoint.com"
   xmlns = "http://www.tutorialspoint.com"
   elementFormDefault = "qualified">

   <xs:element name = "person">
      <xs:complexType >
         <xs:sequence>
            <xs:element name = "firstname" type = "xs:string"/>
            <xs:element name = "lastname" type = "xs:string"/>
            <xs:element name = "nickname" type = "xs:string"/>   
            <xs:any minOccurs = "0"/>		 
         </xs:sequence>
      </xs:complexType>
   </xs:element>
	
</xs:schema>

Désormais, person.xml sera validé par rapport à person.xsd et address.xsd.