XSD <anyAttribute> 元素

Το στοιχείο <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". Σε αυτή την περίπτωση μπορούμε να το κάνουμε αυτό, ακόμα και αν ο δημιουργός του 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 文件是有效的,这是因为 schema "family.xsd" 允许我们向 "person" 元素添加属性。

<any> 和 <anyAttribute> 均可用于制作可扩展的文档!它们使文档有能力包含未在主 XML schema 中声明过的附加元素。