XSD L' elemento <anyAttribute>
L'elemento <anyAttribute> ci permette di estendere il documento XML con attributi non specificati dallo schema!
L'elemento <qualsiasiAttributo>
L'elemento <anyAttribute> ci consente di estendere il documento XML con attributi non specificati dallo schema.
L'esempio seguente è un frammento di uno schema XML chiamato "family.xsd". Mostra una dichiarazione per l'elemento "persona". Utilizzando l'elemento <anyAttribute> possiamo aggiungere un numero qualsiasi di attributi all'elemento "person":
<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 l'elemento "person" con un attributo "eyecolor". In questo caso possiamo farlo, anche se l'autore dello schema sopra non ha mai dichiarato alcun attributo "eyecolor".
Guarda questo file di schema, chiamato "attribute.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:attribute name="eyecolor">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="blue|brown|green|grey"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:schema>
Il file XML di seguito (chiamato "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
https://www.w3schools.com attribute.xsd">
<person eyecolor="green">
<firstname>Hege</firstname>
<lastname>Refsnes</lastname>
</person>
<person eyecolor="blue">
<firstname>Stale</firstname>
<lastname>Refsnes</lastname>
</person>
</persons>
Il file XML sopra è valido perché lo schema "family.xsd" ci consente di aggiungere un attributo all'elemento "person".
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.