Elemen <anyAttribute> XSD

Elemen <anyAttribute> memberikan kemampuan untuk meluas dokumen XML melalui atribut yang belum disebutkan dalam schema!

Elemen <anyAttribute>

Elemen <anyAttribute> memberikan kemampuan untuk meluas dokumen XML melalui atribut yang belum disebutkan dalam schema!

Contoh di bawah ini adalah bagian dari XML schema yang bernama "family.xsd". Ini menunjukkan deklarasi untuk elemen "person". Dengan menggunakan elemen <anyAttribute>, kami dapat menambahkan sejumlah besar atribut ke elemen "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>

Sekarang, kami berharap dapat memperluas elemen "person" melalui atribut "gender". Dalam kasus ini, kami dapat melakukan hal ini, bahkan jika penulis schema tidak pernah mengumumkan atribut "gender" apapun.

Lihat berkas schema ini, yang bernama "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 bawah ini adalah XML (dengan nama "Myfamily.xml") yang menggunakan komponen dari schema yang berbeda, "family.xsd" dan "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>

Berkas XML ini adalah yang sah karena schema "family.xsd" memungkinkan kami untuk menambah atribut ke elemen "person".

<any> dan <anyAttribute> keduanya dapat digunakan untuk membuat dokumen yang dapat diperluas! Mereka memungkinkan dokumen untuk mengandung elemen ekstra yang belum diumumkan dalam schema XML utama.