XML Schema <xs:anyAttribute> 元素
XML Schema <xs:anyAttribute> 元素使我们有能力通过未被 schema 规定的属性来扩展 XML 文档
<xs:anyAttribute> 元素
<xs:anyAttribute> 元素使我们有能力通过未被 schema 规定的属性来扩展 XML 文档
下面的范例是来自名为 "family.xsd" 的 XML schema 的一个片段
它为我们展示了针对 "person" 元素的一个声明
通过使用 <xs: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>
现在,我们就可以通过 "gender" 属性来扩展 "person" 元素
在这种情况下我们就可以这样做,即使这个 schema 的作者从未声明过任何 "gender" 属性
请看这个 名为 "attribute.xsd" 的 XML Schema 文件
<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="https://www.twle.cn" xmlns="http://www.twle.cn" 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 https://www.twle.cn attribute.xsd"> <person gender="female"> <firstname>Hege</firstname> <lastname>Refsnes</lastname> </person> <person gender="male"> <firstname>Stale</firstname> <lastname>Refsnes</lastname> </person> </persons>
上面这个 XML 文件是有效的,这是因为 schema "family.xsd" 允许我们向 "person" 元素添加属性