Elemento <anyAttribute> di XSD
- Pagina precedente XSD <any>
- Pagina successiva Sostituzione di elementi XSD
L'elemento <anyAttribute> ci permette di estendere il documento XML attraverso attributi non definiti dallo schema!
L'elemento <anyAttribute>
L'elemento <anyAttribute> ci permette di estendere il documento XML attraverso attributi non definiti dallo schema!
Esempio di frammento di schema XML proveniente da "family.xsd". Questo ci mostra una dichiarazione per l'elemento "person". Utilizzando l'elemento <anyAttribute> possiamo aggiungere un numero illimitato 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, speriamo di estendere l'elemento "person" tramite l'attributo "gender". In questo caso possiamo farlo, anche se l'autore di questo schema non ha mai dichiarato alcun attributo "gender".
Ecco questo file schema, chiamato "attribute.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:attribute name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:schema>
Di seguito questo XML (chiamato "Myfamily.xml"), utilizza componenti provenienti da diversi schema, "family.xsd" e "attribute.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 attribute.xsd"> <person gender="female"> <firstname>Jane</firstname> <lastname>Smith</lastname> </person> <person gender="male"> <firstname>David</firstname> <lastname>Smith</lastname> </person> </persons>
Questo file XML è valido perché lo schema "family.xsd" ci permette di aggiungere attributi all'elemento "person".
Gli elementi <any> e <anyAttribute> possono entrambi essere utilizzati per creare documenti estensibili! Consentono al documento di includere elementi aggiuntivi non dichiarati nel principale schema XML.
- Pagina precedente XSD <any>
- Pagina successiva Sostituzione di elementi XSD