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 街</街道><城市>上海市</城市><省份>上海</省份>  
         </地址>  
     </联系人>  

</联系人列表>  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值