Gli ultimi tutorial di sviluppo web
 

XSD Il <any> Element


Il <any> elemento ci consente di estendere il documento XML con elementi non specificati dallo schema!


Il <any> Element

Il <any> elemento ci consente di estendere il documento XML con elementi non specificati dallo schema.

Il seguente esempio è un frammento da uno schema XML chiamato "family.xsd" . Essa mostra una dichiarazione per la "person" elemento. Usando il <any> elemento possiamo estendere (after <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 la "person" elemento con un "children" elemento. In questo caso possiamo farlo, anche se l'autore dello schema di cui sopra non ha dichiarato alcun "children" elemento.

Guardate questo file di schema, denominato "children.xsd" :

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3ii.com"
xmlns="http://www.w3ii.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 (called "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
http://www.w3ii.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 di cui sopra è valido in quanto lo schema "family.xsd" ci permette di estendere la "person" elemento con un elemento opzionale dopo il "lastname" elemento.

Il <any> e <anyAttribute> elementi vengono utilizzati per rendere i documenti ALLUNGABILI! Essi consentono ai documenti di contenere elementi aggiuntivi che non vengono dichiarati nello schema XML principale.