Xsd-complex-anyattribute
提供:Dev Guides
XSD-<anyAttribute>
<xs:anyAttribute>要素は、XSD機能を拡張するために使用されます。 スキーマで定義されていない属性によって1つのxsdで定義されているcomplexType要素を拡張するために使用されます。
例について考えてみましょう-person.xsdは person complexType要素を定義しています。 attributes.xsdは age 属性を定義しています。
*person.xsd*
<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"
targetNamespace = "http://www.finddevguides.com"
xmlns = "http://www.finddevguides.com"
elementFormDefault = "qualified">
<xs:element name = "person">
<xs:complexType >
<xs:sequence>
<xs:element name = "firstname" type = "xs:string"/>
<xs:element name = "lastname" type = "xs:string"/>
<xs:element name = "nickname" type = "xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
*attributes.xsd*
<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"
targetNamespace = "http://www.finddevguides.com"
xmlns = "http://www.finddevguides.com"
elementFormDefault = "qualified">
<xs:attribute name = "age">
<xs:simpleType>
<xs:restriction base = "xs:integer">
<xs:pattern value = "[0-100]"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:schema>
XMLで年齢を持つ人を定義する場合、次の宣言は無効になります。
*person.xml*
<?xml version = "1.0"?>
<class xmlns = "http://www.finddevguides.com"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://www.finddevguides.com person.xsd
http://www.finddevguides.com attributes.xsd">
<person age = "20">
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
</person>
</class>
<xs:anyAttribute>を使用
上記の person.xml を検証するには、person.xsdの person 要素に<xs:anyAttribute>を追加します。
*person.xsd*
<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"
targetNamespace = "http://www.finddevguides.com"
xmlns = "http://www.finddevguides.com"
elementFormDefault = "qualified">
<xs:element name = "person">
<xs:complexType >
<xs:sequence>
<xs:element name = "firstname" type = "xs:string"/>
<xs:element name = "lastname" type = "xs:string"/>
<xs:element name = "nickname" type = "xs:string"/>
</xs:sequence>
<xs:anyAttribute/>
</xs:complexType>
</xs:element>
</xs:schema>
これで、 person.xml は person.xsd および attributes.xsd に対して検証されます。