Schema基础

来源:互联网 发布:双11 品类销售数据 编辑:程序博客网 时间:2024/04/20 07:55
schema是什么?
        XML Schema是以XML语言为基础的,它用于可替代DTD。


一份XML schema文件描述了XML文档的结构。
        作用是:定义一份XML文档的合法组件群,就像DTD的作用一样


  一份XML Schema
          *定义了可以出现在文档里的元素 
          *定义了可以出现在文档里的属性 
          *定义了哪些元素是子元素 
          *定义了子元素的顺序 
          *定义了子元素的数量 
          *定义了一个元素应是否能包含文本,或应该是空的 
          *定义了元素和属性的数据类型 
          *定义了元素和属性的默认值和固定值 


  Schema较于DTD的优点:
      *XML Schema针对将来的额外内容是可扩展的 
      *XML Schema内容比DTD丰富,作用也更大 
      *XML Schema是以XML语言编写而成的 
      *XML Schema支持数据类型 
      *XML Schema支持名称空间(namespaces) 
      *更易于描述被允许的文档内容 
      *更易于检验数据的正确性 
      *更易于与数据库中的数据一起协同工作 
      *更易于定义数据的使用面(关于数据的限制) 
      *更易于定义数据样式(数据格式) 
      *更易于把数据转换成不同的数据类型 
 
创建一个Schema
     1、创建一个后缀为xsd的文件,文件格式为xml。
     2、有文档说明,以schema标签为根标签。
     3、在schema标签中添加命名空间:
a)首先引入xmlns:xs="http://www.w3.org/2001/XMLSchema"。
b)targetNameSpace="http://www.feicui.com/newschema"声明一个我们自己的命名空间(uri)。
c)xmlns:myns="http://www.feicui.com/newschema"。
d)elementFormDefault="qualified"严格按照我们的schema文档约束我们要编写的xml文件。
     4、在schema标签中添加其他标签来编写我们的xml约束
  例子:


    <?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>


    
引用Schema
在根标签中,加入:
1、xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"要引入我们的shema文档需要使用这个命名空间中的属性。
     2、xsi:schemaLocation="http://www.feicui.org/feicuischema newschema.xsd" 使用上面引入的命名空间xsi中的schemalocation读取我们的schema文档,首先要填入我们的schema文档的命名空间的uri,然后空格,再填入我们的schema文档的名字。
3、在通过引入命名空间的方法,将我们的schema文档的命名空间引入。


例子:


<?xml version="1.0"?><notexmlns="http://www.w3schools.com"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.w3schools.com note.xsd"><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>


简单元素
   
定义简明元素的语法为:


<xs:element name="xxx" type="yyy"/> ;


例子:
     <xs:element name="age" type="xs:integer"/> 


简单元素内容的约束:
1、首先在我们要约束的元素中添加一个simpleType的标签
2、然后在simpleType中添加一个restricetion标签,这个标签中有一个重要的属性:base,需要填入我们这个信息类型是基于哪一种类型的。
3、在restricetion标签中,我们就可以加入我们对信息内容的一个具体的约束了:
4、a 枚举约束 enumeration 
  b 对大小值的限定 mininclusive 设定最小值,包含最小值
minEnclusive 设定最小值,不包含最小值
maxinclusive 设定最大值,包含最大值
maxEnclusive 设定最大值,不包含最大值
  c样式约束
[a-zA-Z]这一位字符,在a-z的大小写中任选一个填入

5.复合元素的约束:
1、首先我们在要约束的元素中添加一个complexType的标签。
2、然后我们要填入指示器(eq:sequence)。
3、添加子元素,子元素可以使复合元素也可以使简单元素。


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















0 0