Schema的简介和用法


一、什么是Schema。
    1.XML  Schema是以XML语言为基础的,它用于可替代DTD。

    2.一份XML  Schema文件描述了XML文档的结构。

        2.1 定义了可以出现在文档里的元素 。
        2.2 定义了可以出现在文档里的属性。
        2.3 定义了哪些元素是子元素 。
        2.4 定义了子元素的顺序。
        2.5 定义了子元素的数量。
 2.6 定义了一个元素应是否能包含文本,或应该是空的。
 2.7 定义了元素和属性的数据类型。
 2.8 定义了元素和属性的默认值和固定值。

    3.XML  Schema语言也被称为XML Schema Definition (XSD) (Schema定义)。
二、如何使用XML Schema。
    1.XML Schema的最好用的地方之一就是它支持数据类型
        支持数据类型所带来的好处:
            1.1 更易于描述被允许的文档内容。
            1.2 更易于检验数据的正确性。
     1.3 更易于与数据库中的数据一起协同工作。
            1.4 更易于定义数据的使用面(关于数据的限制)。
            1.5 更易于定义数据样式(数据格式)。
            1.6 更易于把数据转换成不同的数据类型。
    2. XML  Schema另一个好处就是他们是用XML编写成的。
        用XML编写的好处是:
            2.1 可以不需要在学一种新语言。
     2.2 可以用XML编辑器来编辑Schema文件。
            2.3 可以用XML解析器解析Schema文件。
     2.4 可以用XML DOM处理Schema。
            2.5 可以用XST转换Schema。
    3.XML Schema是文件时由XML编写的,所以他们是可扩展的。
        Schema可扩展意味着你可以:
            3.1 在别的Schema文件里再次用到你的Schema。
            3.2 从标准的数据类型中派生出你自己的数据类型。
            3.3 在相同的文档中参考多种Schema。
    4.规范的XML文档是符合XML语法规则的文档。
            4.1 开头必须有XML声明。
            4.2 必须有一个独特的根目录元素。
            4.3 开始标签(start-tag)必须和结束标签(end-tag)匹配。
            4.4 元素是有大小写区分的。
            4.5 元素必须有结束。
            4.6 所有的元素必须被合理嵌套。
            4.7 所有属性值必须在引号里面。
            4.8 用特殊字符时必须用到实体。
三、如何制定 XSD。
    列如: <?xml version="1.0"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  targetNamespace="http://www.w3schools.com"
  xmlns="http://www.w3schools.com"
  elementFormDefault="qualified">
  <xs:element name="note">
   <xs:complexType>
    <xs:sequence> 
     <xs:element name="to" type="xs:string"/> 
     <xs:element name="from" type="xs:string"/> 
     <xs:element name="heading" type="xs:string"/> 
     <xs:element name="body" type="xs:string"/>
    </xs:sequence>
   </xs:complexType>
  </xs:element>
  </xs:schema>


             <?xml version="1.0"?>
  <note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
  </note>   


四、什么是简单元素?
    4.1 简单元素是只含有文本的XML元素,它不可以含有其他元件或属性
        但是,“只含文本” 这个限定条件是非常容易引起误解的,文本
        可以有很多的不同类型,它可以是XML Schema定义里的文本类型之一
         (逻辑值,字符串,日期,等等),也可以是自定义文本类型。
    
    
    4.2  一个简单的简明元素定义。
          
       例如: <xs: element  name="xxx" type="yyy"/>
                    name 是指元素名称, type 是指元素的数据类型。

             常见的数据类型:xs:string,xs:decimal,xs:integer,xs:boolean,xs:date,xs:time


       例如1: XML元素
               <lastname>Refsnes</lastname> 
  <age>36</age>
   <dateborn>1970-03-27</dateborn>

              下面是相应的简单元素定义
           
               <xs:element name="lastname" type="xs:string"/>   
               <xs:element name="age" type="xs:integer"/>
               <xs:element name="dateborn" type="xs:date"/>

     4.3简单元素的默认值和固定值。
            
               默认值:值没有被指定时,属性自动会设置成默认值.   default="xxx"; 
               固定值:是自动分派给属性的.   fixed="yyy"


     4.4首先在我们要约束的元素中添加一个simpleType的标签
     4.5然后在simpleType中添加一个restricetion标签,这个标签中有一个重要的属性:base,需要填入我们这个信息类型是基于哪一种类型的。
     4.6在restricetion标签中,我们就可以加入我们对信息内容的一个具体的约束了:
     4.6.1枚举约束 enumeration
          4.6.2对大小值的限定 mininclusive 设定最小值,这种包含最小值的
         minEnclusive 设定最小值,但是不包含最小值
         maxinclusive 设定最大值,包含最大值
         maxEnclusive 设定最大值,但是不包含最大值
          4.6.3样式约束
  [a-zA-Z]这一位字符,在a-z的大小写中任选一个填入
  male|female这里需要多选一来填入信息内容
  ([a-z][0-9])+  这里小写字母+一位数字的格式重复(可以1次可以多次)
 
五、什么是复合元素?
    复合元素(Complex Elements)是含有其他元素和/或属性的XML元素。
    有四种复合元素:
           1. 空元素
           2. 只含有其他元素的元素
           3. 只含有文本的元素
           4. 含有文本的其他元素的元素
    5.1复合元素的约束:
 5.1.1 首先我们在要约束的元素中添加一个complexType的标签。
 5.1.2 然后我们要填入指示器(eq:sequence)。
 5.1.3 添加子元素,子元素可以使复合元素也可以使简单元素。

    5.2 属性定义
 5.2.1 定义的格式:<xs:attribute name="xxx" type="yyy"/>
 5.2.2 属性定义可以定义在complexType中
 5.2.3 属性定义中use表示这个属性是否需要出现在元素中
  optional:可出现可不出现
  prohibited:不能出现
  required:必须出现
 5.2.4 如果要在简单元素中添加属性,还是需要complexType,只是我们需要在这个标签中使用simplecontent标签,其中使用extension标签,用来扩展我们的简单元素,添加属性。

    5.3顺序指示器
 5.3.1 1sequence:指定了子元素必须出现并且要按照定义的顺序依次出现。
 5.3.2 all:指定了子元素可以以任意顺序出现,只出现一次。
 5.3.3 choice:指定子元素中,仅可以出现一个(可以使用maxOccurs修改)。

    5.4数量指示器
 这种指示器不是以元素(标签)的形式出现,而是以子元素的属性的方式出现。 minOccurs 设置出现的最少次数;maxOccurs设置出现的最多次数



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值