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.xmlperson.xsd および attributes.xsd に対して検証されます。