xml之schema例子

如下例子是我在練習schema的時候碰到的,就是在XMLSpy中定義瞭如下schema:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://www.hexinli.com" xmlns="http://www.hexinli.com">
    <xs:element name="學生名冊">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="學生" type="我的類型" maxOccurs="unbounded"/>            
            </xs:sequence>        
        </xs:complexType>
    </xs:element>
    <xs:complexType name="我的類型">
        <xs:sequence>
            <xs:element name="名字" type="xs:string"/>
        </xs:sequence>    
        <xs:attribute name="學號" type="xs:int"/>
    </xs:complexType>
</xs:schema>

如果沒有上面紅色部分是會報錯的,原因就是type="我的類型",“我的類型”不知道來源由哪裏,如果加上上面紅色部分也就說明了我自己定義的類型恰好在本schema中使用到了。


1.   書寫簡單的Schema 文檔  

     9 創建XML 文檔studentschema.xml 如下:  
     <?xml version="1.0" encoding="GB2312"?>  
          <學生  學號="1">  
               <姓名>張三</姓名>  
               <性別>男</性別>  
               <年齡>20</年齡>  
          </學生>  
          <學生  學號="2">  
               <姓名>李四</姓名>  
               <性別>女</性別>  
               <年齡>19</年齡>  
          </學生>  
          <學生  學號="3">  
               <姓名>王二</姓名>  
               <性別>男</性別>  
               <年齡>21</年齡>  
          </學生>  
          <學生  學號="4">  
               <姓名>王二</姓名>  
               <性別>男</性別>  
               <年齡>21</年齡>  
          </學生>  

     </學生名冊>  

 9 新建文本文件,首先是XML 聲明代碼  
     <?xml version="1.0" encoding="GB2312"?>  
      
     9 添加Schema 聲明  
     <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"    
     elementFormDefault="qualified">  
               … …  
     </xs:schema>  
  
     9 添加“學生名冊”元素定義  
     <xs:element name="學生名冊">  
               <xs:complexType>  
                    <xs:sequence>  
                         <xs:element ref="學生" maxOccurs="unbounded"/>  
                    </xs:sequence>  

 </xs:complexType>  
           </xs:element>  
  
      9  “學生名冊”元素之後添加“學生”元素定義  
      <xs:element name="學生">  
                 <xs:complexType>  
                      <xs:sequence>  
                            <xs:element ref="姓名"/>  
                            <xs:element ref="性別"/>  
                            <xs:element ref="年齡"/>  
                      </xs:sequence>  
                      <xs:attribute name="學號" use="required" type="xs:int"/>  
                 </xs:complexType>  
           </xs:element>  
       
      9 參考上述方法依次添加“姓名”、“性別”、“年齡”元素定義  
      <xs:element name="姓名" type="xs:string"/>  
           <xs:element name="性別">  
                 <xs:simpleType>  
                      <xs:restriction base="xs:string">  
                            <xs:enumeration value="女"/>  
                            <xs:enumeration value="男"/>  
                      </xs:restriction>  
                 </xs:simpleType>  
           </xs:element>  
           <xs:element name="年齡" type="xs:int"/>  

 9 文件保存爲studentschema.xsd  
       
      9 在studentSchema.xml 文件中加入對schema 文件的引用  
      <學生名冊  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
      xsi:noNamespaceSchemaLocation="studentschema.xsd">  
       
      9 添加一條不符合約束的數據  
      9 用XMLSPY 觀察出錯信息  
       
2.    根據Schema 書寫XML 文檔  
      9 創建schema 文件company.xsd 如下  
      <?xml version="1.0" encoding="GB2312"?>  
      <xs:schema                                     xmlns:xs="http://www.w3.org/2001/XMLSchema"  
      elementFormDefault="qualified">  
           <xs:element name="聯繫人列表">  
                 <xs:complexType>  
                      <xs:sequence>  

<xs:element ref="聯繫人" maxOccurs="unbounded"/>  
           </xs:sequence>  
           <xs:attribute name="公司" type="xs:string" use="required"/>  
     </xs:complexType>  
  </xs:element>  
  <xs:element name="聯繫人">  
     <xs:complexType>  
           <xs:sequence>  
                <xs:element ref="姓名"/>  
                <xs:element ref="公司"/>  
                <xs:element ref=" 電話"/>  
                <xs:element ref="地址"/>  
           </xs:sequence>  
     </xs:complexType>  
  </xs:element>  
  <xs:element name="公司" type="xs:string"/>  
  <xs:element name=" 郵編" type="xs:int"/>  
  <xs:element name="地址">  
     <xs:complexType>  
           <xs:sequence>  
                <xs:element ref="街道"/>  
                <xs:element ref="城市"/>  
                <xs:element ref="省份"/>  
           </xs:sequence>  
     </xs:complexType>  
  </xs:element>  

<xs:element name="城市">  
     <xs:simpleType>  
           <xs:restriction base="xs:string">  
                <xs:enumeration value="上海"/>  
                <xs:enumeration value="北京市"/>  
           </xs:restriction>  
     </xs:simpleType>  
  </xs:element>  
  <xs:element name="姓名" type="xs:string"/>  
  <xs:element name=" 電話" type="xs:string"/>  
  <xs:element name="省份">  
     <xs:simpleType>  
           <xs:restriction base="xs:string">  
                <xs:enumeration value="上海"/>  
                <xs:enumeration value="北京"/>  
           </xs:restriction>  
     </xs:simpleType>  
  </xs:element>  

<xs:element name="街道" type="xs:string"/>  
</xs:schema>  
  
9 分析上述Schema 文檔根節點元素:聯繫人列表(包含子元素聯繫人、屬性公司)聯繫人元素含姓名、公司、電話、地址四個子節點元素  地址節點元素含有三個子元素:街道、城市和省份  
  
9 創建針對上述Schema 的XML 文檔,示例:  
<?xml version="1.0" encoding="GB2312"?>  
<聯繫人列表  公司="A 集團">  
     <聯繫人>  
         <姓名>張三</姓名>  
         <公司>A 公司</公司>  
         < 電話>(021)5555666</ 電話>  
         <地址>  
              <街道>5 街</街道><城市>上海市</城市><省份>上海</省份>  
         </地址>  
     </聯繫人>  
     <聯繫人>  
         <姓名>王三</姓名>  
         <公司>B 公司</公司>  
         < 電話>(021)5555777</ 電話>  
         <地址>  
              <街道>87 街</街道><城市>上海市</城市><省份>上海</省份>  
         </地址>  
     </聯繫人>  

</聯繫人列表>  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章