schema约束和引入

schema的概述

schema约束同为xml文件的约束模式语言之一, 最大的作用是为了验证xml文件的规范性的.

  是为了解决dtd约束不够的问题, 相应的他的配置就变得比较复杂

  schema本身就是xml语言, 后缀名为xsd, 对命名空间的支持非常好

  schema的根元素就为schema

 

schema约束和dtd约束的区别:

  ⑴XML Schema符合XML语法结构。
  ⑵DOM、SAX等XML API很容易解析出XML Schema文档中的内容。
  ⑶XML Schema对名称空间支持得非常好。
  ⑷XML Schema比XML DTD支持更多的数据类型,并支持用户自定义新的数据类型。
  ⑸XML Schema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制。
  ⑹XML Schema不能像DTD一样定义实体,比DTD更复杂,但Xml Schema现在已是w3c组织的标准,它正逐步取代DTD。

 

schema的引入

  学的时候这个地方搞得最晕了, dtd约束直接在<!ENTITY >中声明了本地文件还是网络路径; 而schema约束中并没有dtd那么详细. 刚开始以为在同一文件夹下就可以使用, 而后使用写好的xml文件的便与约束无关了, 但经过几次试验之后发现约束依然在起作用. 翻了很多资料, 理解了一点,

  首先介绍URL和URI的区别:

    URL: 统一资源定位符, 可以准确的定位到互联网上某一资源的确定位置, 一般由协议, 服务器名, 文件路径组成, URL是URI的子集

    URI: 统一资源标识符, 对某一互联网资源进行标识的字符串, 关羽他俩的区别, 可具体参考:http://www.cnblogs.com/gaojing/archive/2012/02/04/2413626.html

而在schema中, 每个约束模式文档都可以被赋予一个唯一的使用URI标识的名称空间, Xml文件引用schema约束的时候, 便是通过这个名称空间来声明来自哪个shema约束文档的.

 

 

在xsd文档中, 至少要包括shema根元素和xml模式命名空间的定义, 元素定义等

在schema中声明schema根元素:

根元素包括模式的约束, xml模式空间命名的定义, 其他命名空间的定义, 版本信息, 语言信息和其他的信息.

  xmlns=URI: 使用默认的名称空间

  targetNamespace=:URI: 指定schema文档中声明的元素属于哪个命名空间

  xmlns:xsd=URI: 使用名称空间引入多个xml  shema文档

  elementFormaDefault= " ": 指定shema文档中声明的跟元素和所有子元素都属于targetnamespace锁指定的名称空间

 

 解下来, 如何在xml文件中引用定义的schema约束

   在新建的xml文档中加入声明后, 引入schema的约束文档, 

   首先声明约束来自哪个名称空间, 使用xmlns="" 来指定, 

  引入的名称空间和哪个xsd文件对应, 使用schemaLocation="" 来指定, 第一个为名称空间, 第二个为xsd文件路径.

 

如果在开发过程中没有internet连接, 这是ide将约束的URI映射到本地, 所以指定了命名空间和元素后, 仍然可以使用schema约束

 

最后, 从文档中截取了几张图方便理解:

wKiom1N3CHqjvch7AAiKWSTLivk214.jpg

 

wKioL1N3CLSTNo9_AAMym-G-4QQ909.jpg

wKiom1N3CODRC6jfAAKQEJc8MBg383.jpg

 

posted @ 2016-08-26 17:28  bronk  阅读(10518)  评论(0编辑  收藏  举报