XML Schema

来源:互联网 发布:ztree导出json 编辑:程序博客网 时间:2024/06/07 02:40
  • XML Schema 也是一种用于定义和描述XML文档结构与内容的模式语言,其出现时为了克服DTD的局限性
  • XML Schema VS DTD
           XML Schema符合XML语法结构
           DOM、SAX等XML API 很容易解析出XML Schema文档的内容
           XML Schema 对名称空间支持的非常好
           XML Schema 比XML DTD 支持更多的数据类型,并支持用户自己定义新的数据类型
           XML Schema 定义约束的能力非常强大,可以对XML实例文档做出细致的语义限制
           XML Schema 不能像DTD一样定义实体,比DTD更复杂
  • Schema 约束快速入门
            1. XML Schema 文件自身就是一个XML文件,但它的扩展名通常为.xsd
            2. 一个XML Schema文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实力文档
            3.和XML文件一样,XML Schema文档也必须有一个根节点,但这个根节点的名称为Schema
            4.编写了一个XML Schema约束文档后,通常需要把这个文件中声明的元素绑定到一个URI地址上,在XML Schema技术中有一个专业术语来描述这个过程,即把XML                         Schema 文档声明的元素绑定到一个名称空间上,以后XML文件就可以通过这个URI(即名称空间)来告诉解析引擎,XML文档中编写的元素来自哪里,被谁约束 
  •  Schema文档案例
book.xsd
<?xml version="1.0" encoding="UTF-8" ?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
         targetNamespace="http://www.itcast.cn"
         elementFormDefault="qualified">
     <xs:element name='书架'>
        <xs:complexType>
           <xs:sequence maxOccurs = 'unbouned'>
              <xs:element name='书'>
                <xs:complexType>
                  <xs:sequence>
                     <xs:element name='书名' type='xs:string'/>
                     <xs:element name='作者'type='xs:string'/>
                     <xs:element name='售价'type='xs:string'/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
           </xs:sequence>
        </xs:complexType>
     </xs:element>
 </xs:schema>

<?xml version="1.0" encoding="UTF-8" ?>

<itcast:书架 xmlns:itcast=http://www.itcast.cn"

                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                     xsi:schemaLocation="http://www.itcast.cn" book.xsd>

    <itcast:书> 

        <itcast:书名>Java 就业培训教程</itcast:书名>

        <itcast:作者>张孝祥</itcast:作者>  

        <itcast:售价>109元</itcast:售价>

    </itcast:书>

</itcast:书架>

  • 名称空间的概念
    1. 在XML Schema 中,每个约束模式文档都可以被赋予一个唯一的名称空间,名称空间用唯一的URI(Uniform Resource Identifier,统一资源标示符)表示,在xml文件中书写标签时,可以通过名称空间声明(xmlns),来声明当前编写的标签来自哪个
Schema约束文档。
  <itcast:书架 xmnls:itcast=“http://www.itcast.cn”>
    <itcast:书>......</itcast :书> 
</itcast:书架>

此处使用itcast来指向声明的名称,以便于后面对名称空间的引用

注意:名称空间的名字语法容易让人混淆,尽管以http://开始,那个URL并不是指向一个包含模式定义的文件。事实上,这个URL:http://www.itcast.cn根本没有指向任何文件,只是一个分配的名字。
2.为了在一个XML文档中声明它所遵循的Schema文件的具体位置,通常需要在XML文档的根节点中使用schemaLocation属性来指定,例如

<itcast:书架 xmlns:itcast=http://www.itcast.cn"

                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                      xsi:schemaLocation="http://www.itcast.cn" book.xsd>

    3.schemaLocation 此属性有两个值,第一个值是需要使用的命名空间,第二个值是供命名空间使用的XML Schema的位置,两者之间用空格分隔符分隔
    4.注意,在使用schemaLocation   属性时,也需要指定该属性来自哪里 
  • 使用默认名称空间
    基本格式:xmlns="URI"
   举例
   

<书架 xmlns:http://www.itcast.cn"

                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                      xsi:schemaLocation="http://www.itcast.cn" book.xsd>

    <书> 

        <书名>Java 就业培训教程</书名>

        <作者>张孝祥</作者>  

        <售价>109元</售价>

    </书>

<书架>

0 0