Xsd-complex-any

提供:Dev Guides
移動先:案内検索

XSD-<すべて>

<any>要素は、XSD機能を拡張するために使用されます。 スキーマで定義されていない要素によって、1つのXSDで定義されているcomplexType要素を拡張するために使用されます。

例について考えてみましょう-person.xsdは person complexType要素を定義しています。 address.xsdは address complexType要素を定義しています。

*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>
*address.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 = "address">
      <xs:complexType>
         <xs:sequence>
            <xs:element name = "houseNumber" type = "xs:string"/>
            <xs:element name = "street" type = "xs:string"/>
            <xs:element name = "state" type = "xs:string"/>
            <xs:element name = "zipcode" type = "xs:integer"/>
         </xs:sequence>
      </xs:complexType>
   </xs:element>

</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 address.xsd">

   <person>
      <firstname>Dinkar</firstname>
      <lastname>Kad</lastname>
      <nickname>Dinkar</lastname>

      <address>
         <houseNumber>101</firstname>
         <street>Sector-1,Patiala</lastname>
         <state>Punjab</lastname>
         <zipcode>301202<zipcode>
      </address>

   </person>

</class>

<xs:any>を使用

上記のperson.xmlを検証するには、person.xsdのperson要素に<xs:any>を追加します。

*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:any minOccurs = "0"/>
         </xs:sequence>
      </xs:complexType>
   </xs:element>

</xs:schema>

これで、person.xmlがperson.xsdおよびaddress.xsdに対して検証されます。