Yếu tố <any> của XSD

Phần tử <any> cho phép chúng ta mở rộng tài liệu XML bằng cách sử dụng các phần tử không được quy định bởi schema!

Phần tử <any>

Phần tử <any> cho phép chúng ta mở rộng tài liệu XML bằng cách sử dụng các phần tử không được quy định bởi schema!

Ví dụ dưới đây là đoạn trích từ XML schema có tên là "family.xsd". Nó hiển thị một bản khai báo cho phần tử "person". Bằng cách sử dụng phần tử <any>, chúng ta có thể mở rộng nội dung của "person" qua bất kỳ phần tử nào (sau <lastname>):

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
      <xs:any minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Hiện tại, chúng ta muốn sử dụng phần tử "children" để mở rộng phần tử "person". Trong trường hợp này, chúng ta có thể làm như vậy, ngay cả khi tác giả của schema này không có bất kỳ phần tử "children" nào được tuyên bố.

Xin xem tệp schema này, được đặt tên là "children.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:element name="children">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="childname" type="xs:string"
      maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
</xs:schema>

Dưới đây là tệp XML này (được đặt tên là "Myfamily.xml"), sử dụng các thành phần từ hai schema khác nhau, "family.xsd" và "children.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 children.xsd">
<person>
<firstname>David</firstname>
<lastname>Smith</lastname>
<children>
  <childname>mike</childname>
</children>
</person>
<person>
<firstname>Tony</firstname>
<lastname>Smith</lastname>
</person>
</persons>

Tệp XML này là hợp lệ vì schema "family.xsd" cho phép chúng ta mở rộng yếu tố "person" thông qua yếu tố tùy chọn sau yếu tố "lastname".

<any> và <anyAttribute> đều có thể được sử dụng để tạo tài liệu mở rộng! Chúng cho tài liệu khả năng chứa các yếu tố bổ sung không được khai báo trong schema XML chính.