XSD Phần tử <anyAttribute>
- Trang trước XSD <any>
- Trang sau Thay thế phần tử XSD
Phần tử <anyAttribute> cho phép chúng ta mở rộng tài liệu XML bằng cách sử dụng các thuộc tính không được quy định bởi schema!
Phần tử <anyAttribute>
Phần tử <anyAttribute> cho phép chúng ta mở rộng tài liệu XML bằng cách sử dụng các thuộc tính không được quy định bởi schema!
Ví dụ dưới đây là một đoạn từ XML schema có tên là "family.xsd". Nó cho chúng ta thấy một tuyên bố cho phần tử "person". Bằng cách sử dụng phần tử <anyAttribute>, chúng ta có thể thêm một số lượng bất kỳ thuộc tính nào vào phần tử "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>
Hiện tại, chúng ta hy vọng sẽ mở rộng thành phần "person" bằng cách sử dụng thuộc tính "gender" này. Trong trường hợp này, chúng ta có thể làm như sau, ngay cả khi tác giả của schema này chưa từng tuyên bố bất kỳ thuộc tính "gender" nào.
Xin xem tệp schema này, được gọi là "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>
Dưới đây là XML (được gọi là "Myfamily.xml"), sử dụng các thành phần từ các schema khác nhau, "family.xsd" và "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>
Tệp XML này là hợp lệ vì schema "family.xsd" cho phép chúng ta thêm thuộc tính vào phần tử "person".
<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 phần tử bổ sung không được khai báo trong schema XML chính.
- Trang trước XSD <any>
- Trang sau Thay thế phần tử XSD