XML Schema复杂元素2

       接上一篇:XML Schema复杂元素.

       四、ref引用

       ref可以在元素中直接引用其他元素的声明。

  1. <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="objects">
            <xs:complexType>
                <xs:sequence>
                   <xs:element name="example">
                    <xs:complexType>
                       <xs:sequence>
                           <xs:element ref="ele_string"/> 
                           <xs:element ref="ele_int"/> 
                           <xs:element ref="ele_bool"/>           
                        </xs:sequence>       
                    </xs:complexType>    
                   </xs:element>
                   <xs:element name="instance">
                      <xs:complexType>
                         <xs:sequence>
                             <xs:element ref="ele_string"/> 
                             <xs:element ref="ele_int"/> 
                             <xs:element ref="ele_bool"/>
                             <xs:element name="ele_date" type="xs:date"/>           
                        </xs:sequence>       
                       </xs:complexType>
                   </xs:element>
                </xs:sequence>        
            </xs:complexType>    
        </xs:element>    
        
        <xs:element name="ele_string" type="xs:string"/>
        <xs:element name="ele_int" type="xs:integer"/>
        <xs:element name="ele_bool" type="xs:boolean"/>
    </xs:schema

      1、元素组

      元素组是指将若干个元素声明归为一组,当需要进行引用时,直接引用组名。如上面的schema可以这么定义:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="objects">
            <xs:complexType>
                <xs:sequence>
                   <xs:element name="example">
                    <xs:complexType>
                       <xs:sequence>
                           <xs:group ref="testGrop"/>           
                        </xs:sequence>       
                    </xs:complexType>    
                   </xs:element>
                   <xs:element name="instance">
                      <xs:complexType>
                         <xs:sequence>
                             <xs:group ref="testGrop"/>
                             <xs:element name="ele_date" type="xs:date"/>           
                        </xs:sequence>       
                       </xs:complexType>
                   </xs:element>
                </xs:sequence>        
            </xs:complexType>    
        </xs:element>    
        
        <xs:group name="testGrop">
          <xs:sequence>
                <xs:element name="ele_string" type="xs:string"/>
                <xs:element name="ele_int" type="xs:integer"/>
                <xs:element name="ele_bool" type="xs:boolean"/>
          </xs:sequence>
        </xs:group>
    </xs:schema

      2、属性组

      属性组将若干个属性声明归为一组,当需要时,可直接引用。

  1. <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="example">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:string">
                        <xs:attributeGroup ref="attrGroup"/>                
                    </xs:extension>
                </xs:simpleContent>      
            </xs:complexType>     
        </xs:element>
        
        <xs:attributeGroup name="attrGroup">
                <xs:attribute name="font" type="xs:string"/>
                <xs:attribute name="size" type="xs:string"/>
                <xs:attribute name="bold" type="xs:string"/>
        </xs:attributeGroup>
    </xs:schema
posted @ 2010-01-09 03:01  Asharp  阅读(663)  评论(0编辑  收藏  举报