أحدث البرامج التعليمية وتطوير الشبكة
 

XSD و <anyAttribute> Element


و <anyAttribute> عنصر تمكننا من تقديم وثيقة XML مع سمات لم يحددها المخطط!


و <anyAttribute> العنصر

و <anyAttribute> عنصر تمكننا من تقديم وثيقة XML مع سمات لم يحددها المخطط.

المثال التالي هو جزء من مخطط 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" السمة.

انظروا الى هذا ملف المخطط، ودعا "attribute.xsd" :

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3ii.com"
xmlns="http://www.w3ii.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 أدناه (called "Myfamily.xml") ، يستخدم عناصر من اثنين من مخططات مختلفة. "family.xsd" و "attribute.xsd" :

<?xml version="1.0" encoding="UTF-8"?>

<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.w3ii.com attribute.xsd">

<person gender="female">
  <firstname>Hege</firstname>
  <lastname>Refsnes</lastname>
</person>

<person gender="male">
  <firstname>Stale</firstname>
  <lastname>Refsnes</lastname>
</person>

</persons>

ملف XML أعلاه هو صالح لأن مخطط "family.xsd" يسمح لنا لإضافة السمة إلى "person" عنصر.

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