عنصر <anyAttribute> XSD

عنصر <anyAttribute> به ما امکان می‌دهد تا با استفاده از ویژگی‌هایی که توسط schema تعریف نشده‌اند، XML document را گسترش دهیم!

عنصر <anyAttribute>

عنصر <anyAttribute> به ما امکان می‌دهد تا با استفاده از ویژگی‌هایی که توسط schema تعریف نشده‌اند، XML document را گسترش دهیم!

مثال زیر یک قطعه از XML schema به نام "family.xsd" است. این مثال به ما نشان می‌دهد که یک اعلام برای عنصر "person" انجام شده است. با استفاده از عنصر <anyAttribute>، ما می‌توانیم تعداد دلخواهی ویژگی به عنصر "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>

حالا، ما امیدواریم که بتوانیم از "gender" attribute برای گسترش element "person" استفاده کنیم. در این حالت می‌توانیم این کار را انجام دهیم، حتی اگر نویسنده schema هیچ گونه attribute "gender" را اعلام نکرده باشد.

این schema را ببینید، به نام "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>

این XML (به نام "Myfamily.xml") از اجزا متفاوت از schema استفاده می‌کند، "family.xsd" و "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>

این فایل XML موجود است زیرا شمای "family.xsd" اجازه می‌دهد تا به عنصر "person" ویژگی اضافه کنیم.

عناصر <any> و <anyAttribute> هر دو می‌توانند برای ایجاد مستندات قابل گسترش استفاده شوند! آنها مستندات را قادر می‌سازند تا عناصر اضافی را شامل شوند که در شمای اصلی XML اعلام نشده‌اند.