Elemento <any> XSD

L'elemento <any> ci permette di espandere il documento XML attraverso elementi non specificati dallo schema!

L'elemento <any>

L'elemento <any> ci permette di espandere il documento XML attraverso elementi non specificati dallo schema!

Ecco un esempio estratto dallo schema XML denominato "family.xsd". Questo esempio mostra una dichiarazione per l'elemento "person". Utilizzando l'elemento <any>, possiamo espandere il contenuto di "person" attraverso qualsiasi elemento (dopo <lastname>):

<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, speriamo di utilizzare l'elemento "children" per espandere l'elemento "person". In questo caso possiamo farlo anche se l'autore di questo schema non ha dichiarato alcun elemento "children".

Vedere questo file schema, chiamato "children.xsd":

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.codew3c.com"
xmlns="http://www.codew3c.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>

Questo file XML (chiamato "Myfamily.xml") utilizza componenti provenienti da due schema diversi, "family.xsd" e "children.xsd":

<?xml version="1.0" encoding="ISO-8859-1"?>
<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.codew3c.com children.xsd">
<person>
<firstname>David</firstname>
<lastname>Smith</lastname>
<children>
  <childname>mike</childname>
</children>
</person>
<person>
<firstname>Tony</firstname>
<lastname>Smith</lastname>
</person>
</persons>

Questo file XML è valido, poiché lo schema "family.xsd" ci permette di estendere l'elemento "person" attraverso l'elemento opzionale successivo di "lastname".

<any> e <anyAttribute> possono essere utilizzati per creare documenti estensibili! Consentono al documento di includere elementi aggiuntivi non dichiarati nello schema XML principale.