عنصر <anyAttribute> في XSD

يمنحنا عنصر <anyAttribute> القدرة على توسيع مستند XML عبر خصائص لم تُحدد في مخطط schema!

عنصر <anyAttribute>

يمنحنا عنصر <anyAttribute> القدرة على توسيع مستند XML عبر خصائص لم تُحدد في مخطط schema!

هذا المثال هو جزء من مخطط XML يحمل الاسم "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>

الآن، نأمل في توسيع عنصر "person" باستخدام خاصية "gender". في هذه الحالة يمكننا القيام بذلك، حتى لو لم يُذكر أي خاصية "gender" من قبل مؤلف هذا schema.

انظر إلى هذا ملف 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 صالح لأن schema "family.xsd" يسمح لنا بإضافة خصائص إلى عنصر "person".

يمكن استخدام <any> و <anyAttribute> لصنع وثائق قابلة للتعديل! إنها تجعل الوثيقة قادرة على تضمين عناصر إضافية لم يتم إعلانها في schema الرئيسي للXML.