XSD L' elemento <qualsiasi>
L'elemento <any> ci permette di estendere il documento XML con elementi non specificati dallo schema!
L'elemento <qualsiasi>
L'elemento <any> ci consente di estendere il documento XML con elementi non specificati dallo schema.
L'esempio seguente è un frammento di uno schema XML chiamato "family.xsd". Mostra una dichiarazione per l'elemento "persona". Usando l'elemento <any> possiamo estendere (dopo <lastname>) il contenuto di "person" con qualsiasi elemento:
<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>
Ora vogliamo estendere l'elemento "persona" con un elemento "bambini". In questo caso possiamo farlo, anche se l'autore dello schema sopra non ha mai dichiarato alcun elemento "figlio".
Guarda questo file di schema, chiamato "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>
Il file XML di seguito (chiamato "Myfamily.xml"), utilizza componenti di due schemi diversi; "family.xsd" e "children.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>
Il file XML sopra è valido perché lo schema "family.xsd" ci consente di estendere l'elemento "person" con un elemento opzionale dopo l'elemento "lastname".
Gli elementi <any> e <anyAttribute> sono usati per creare documenti ESTENSIBILI! Consentono ai documenti di contenere elementi aggiuntivi che non sono dichiarati nello schema XML principale.