عنصر <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" "person" عنصر را گسترش دهیم. در این حالت می‌توانیم این کار را انجام دهیم، حتی اگر نویسنده schema هیچگونه ویژگی "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 معرفی نشده‌اند.