Gli ultimi tutorial di sviluppo web
 

XSD Il <anyAttribute> Element


Il <anyAttribute> elemento ci consente di estendere il documento XML con gli attributi non specificati dallo schema!


Il <anyAttribute> Element

Il <anyAttribute> elemento ci consente di estendere il documento XML con gli attributi 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 <anyAttribute> elemento che possiamo aggiungere qualsiasi numero di attributi alla "person" elemento:

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
    <xs:anyAttribute/>
  </xs:complexType>
</xs:element>

Ora vogliamo estendere la "person" elemento con un "gender" attributo. In questo caso possiamo farlo, anche se l'autore dello schema di cui sopra non ha dichiarato alcun "gender" attributo.

Guardate questo file di schema, denominato "attribute.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:attribute name="gender">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="male|female"/>
    </xs:restriction>
  </xs:simpleType>
</xs:attribute>

</xs:schema>

Il file XML di seguito (called "Myfamily.xml") , utilizza componenti di due schemi diversi; "family.xsd" e "attribute.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 attribute.xsd">

<person gender="female">
  <firstname>Hege</firstname>
  <lastname>Refsnes</lastname>
</person>

<person gender="male">
  <firstname>Stale</firstname>
  <lastname>Refsnes</lastname>
</person>

</persons>

Il file XML di cui sopra è valido in quanto lo schema "family.xsd" ci permette di aggiungere un attributo alla "person" 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.