Elemento ng <anyAttribute> sa XSD

Ang elemento <anyAttribute> ay nagbibigay sa atin ng kakayahan na dagdagan ang XML dokumento sa pamamagitan ng mga atributo na hindi pinag-uusapan ng schema!

Ang elemento <anyAttribute>

Ang elemento <anyAttribute> ay nagbibigay sa atin ng kakayahan na dagdagan ang XML dokumento sa pamamagitan ng mga atributo na hindi pinag-uusapan ng schema!

Ang halimbawa na ito ay isang piraso mula sa XML schema na pinangalanang "family.xsd". Ito ay nagpapakita ng isang deklarasyon para sa elemento na "person". Sa pamamagitan ng paggamit ng elemento <anyAttribute>, magagamit natin na magdagdag ng anumang bilang ng atributo sa elemento na "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>

Ngayon, pinipilit naming lumikha ng pagpapalawak para sa elemento "person" sa pamamagitan ng atrributo "gender". Sa ganitong sitwasyon, maaari naming gawin ito kahit na ang may-akda ng schema ay hindi nagdeklara ng anumang "gender" atrributo.

Pansin ang ganitong schema na file, na tinatawag na "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>

Ang mga sumusunod na XML (na tinatawag na "Myfamily.xml"), ay gumagamit ng mga komponente mula sa iba't ibang schema, "family.xsd" at "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>

Ang XML na dokumentong ito ay may katotohanan, dahil ang schema "family.xsd" ay nagbibigay ng kapangyarihan sa amin na magdagdag ng mga attribute sa elemento "person".

Ang <any> at <anyAttribute> ay maaaring gamitin upang gumawa ng puwedeng lagpasahin na dokumento! Ito ay nagbibigay sa dokumento ng kakayahang magkaroon ng karagdagang elemento na hindi naiulat sa pangunahing XML schema.