`
javababy1
  • 浏览: 1169963 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

XML详解----Schema

阅读更多

XML详解----Schema

有人会问,DTD和Schema都是对XML文档的一种约束,为什么不就选其中之一,而又有Schema呢。因为DTD安全度太低了,也就是说它的约束定义能力不足,无法对XML实例文档做出更细致的语义限制。其实细心的人会发现,在DTD中,只有一个数据类型,就是PCDATA(用在元素中)和CDATA(用在属性中),在里面写日期也行,数字还行,字符更是没问题。而Schema正是针对这些DTD的缺点而设计的,Schema是完全使用XML作为描述手段,具有很强的描述能力,扩展能力和处理维护能力等。下面让我们看一个简单的例子吧:
hello.xml
-------------------



说明:
一个根元素:greeting;且这个元素不含属性,无子元素,内容是字符串。

hello.xsd
----------


说明:
XML Schema文档后缀名是.xsd,完全符合XML语法,根元素是schema,命名空间xmlns:xsd="http://www.w3.org/2001/XMLSchema,用元素<element>定义实例文档中的元素,如greeting。xsd:string就是定义的数据类型了,其中的数据类型有很多,比如:int,double,dateTime,Boolean,long,integer,float,等,总之Java等语言里有的数据类型它都有,但要以“xsd:”开头。
让我们再看一个里面有子无素的例子:
customer.xml
-----------


则可以写出以下的XMLSchema文档:
customer.xsd
----------------


说明:
实例文档customer.xml中,<customer>元素含有两个子元素,在Schema中凡是有两个以上的子元素,就认为是复杂类型的,所以我们在Schema文档中采用ComplexType来定义该元素。表示有多个XML子元素。
sequence表示子元素依次出现的顺序。
如果有多层子元素怎么办呢,同样的道理,有几层写几层,一直往下嵌就OK了,这里我要说的是另一种方法,结构看上去会清晰一些。
address.xml
---------------


下面就是采用ref元素来编写的这个Schema文档:
address2.xsd
----------------------


说明:
如果按正常的写法,应该把13-21行的内容替换到每8行去,但这里使用ref元素可以直接将其指向另一个模块,使文档更加具有可读性。
如果元素中包含属性怎么办呢?一样简单,只要在定义完子元素的后面再着定义属性就行了。定义属性用“attribute”,还是举个例子吧
customer2.xml
---------------


这个例子和上面的一个例子差不多,只是在元素customer中设了一个属性id。
customer2.xsd
------------------


说明:
需要注意的一点是,属性和元素不是一家的,所以要把它放在sequence外面写,但它们都在customer的孩子,所以要写在complexType的里面。
下面再看一个例子:
order4-1.xsd
----------------------


上面的例子中,maxOccurs代表:相同元素最多出现的次数,与些相反的是minOccurs代表:出现的最少次数。默认情况下两个都为“1”,如果把minOccurs设为“0”,表示该元素可有可无。choice代表:可选的元素,也就是在这里面写的元素只能选其中之一,不能全写。simpleType代表自定义数据类型,也就是name里的并不是真正的数据类型,而是根据自己的意愿定制的。restriction代表对某一数据类型做约束,也就是只能取其中范围之内符合要求的,比如第25-29行中,里面又有个元素enumeration代表枚举,也就是只能在枚举的那几个中选一个,而下在的36-36行,里面又有一对元素minInclusive和maxInclusive代表类型的取值范围,也就是只能取大于等于minInclusive并且小于等于maxInclusive的数。
把这个Schema用在XML中是这样的:


说明:
红色的部分是导入Schema的命令,绿色的是Schema文件的路径,如果用XMLSPY写时,会自动加上。
对属性的设置,基本上和元素的差不多。比如:


这里我们讲id属性类型作为一种自定义数据类型idType。它的格式就是上面用到的也就是类似于“7-5005-6450-3”样的。
而且,用attribute元素的use属性来定义是否是必须的属性。
required是必须值,optional是可选值,prohibited是无属性值。default属性是默认值

分享到:
评论

相关推荐

    XML详解----Schema(精讲)

    xml 学习的好资料,精讲xml schema模式

    XML XML Schema XSLT 2.0和XQuery开发详解源代码.rar

    《XML XML Schema XSLT 2.0和XQuery开发详解》一书的示例源代码

    XML的Schema详解

    XML的Schema详解,介绍了现今Schema的发展和使用,详细介绍了使用技巧和方法!!!

    Java Web开发详解:XML+DTD+XML Schema+XSLT+Servlet3.0+JSP2.2深入剖析与实例应用/孙鑫编著

    鑫编写的《Java Web开发详解——XML+DTD+XML Schema+XSLT+Servlet3.0+JSP2.2深入剖析与实例应用》共分4篇,从XML、XML Schema、XSLT、Servlet、JSP和应用的角度向读者展示了Java Web开发中各种技术的应用,循序渐进...

    JAVA web.xml配置详解

    &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;web-app xmlns=... &lt;display-name&gt;网站名称&lt;/display-name&gt; 网站描述 &lt;!-- icon元素包含small-icon和large-icon两个子元素.用来指定web站台中小图标和大图标的路径....

    XML Schema .ppt

    全面介绍 xml schema 数据类型

    Spring实战2-Bean注入详解的源代码

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=...

    详解XML中的模式Schema

    XML中拥有Schema特性,能够比DTD更加强大地引入元素结构,下面我们就来详解XML中的模式Schema的概念及作用和用法,需要的朋友可以参考下

    Schema教材

    schema文件详解: XML Schema 简介 为什么要使用 XML Schema? 如何使用 XSD? XSD 简易元素 XSD 属性 XSD 限定 / Facets XSD 复合元素

    web开发详解2

    web开发详解2

    XML大全(7本电子书合集)

    XML大全(7本电子书合集) XMLHTTP手册.CHM XmlSchema标准参考手册.chm XMLDOM对象方法手册.chm XmlDOM标准参考手册.chm xml教程.chm XSLT标准参考手册.chm XSL简明教程.chm

    Apache 文件上传与文件下载案例详解

    写一个Apache文件上传与文件下载的案例...web-app xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns=http://java.sun.com/xml/ns/javaee xsi:schemaLocation=http://java.sun.com/xml/ns/javaee http://jav

    XML基础教程与实验指导课件ppt

    关于XML基础教程与实验指导 内容详尽 XML Schema亦有详解 各章节ppt相关文档也都有保留 希望对学习XML的朋友有所帮助

    Eclipse XSD 生成枚举类型的Schema的实例详解

    Eclipse XSD 生成枚举类型的Schema的实例详解 前言: 因为网上关于Eclipse XSD的中文资料比较少,而且关于Eclipse XSD的范例代码也凤毛麟角,但是有的时候我们需要生成一个带枚举限定的简单类型的XSD Schema,比如...

    Spring 配置文件XML头部文件模板实例详解

    beans xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns=http://www.springframework.org/schema/beans xsi:schemaLocation=http://www.springframework.org/schema/beans ...

    Java的MyBatis框架中关键的XML字段映射的配置参数详解

    将XML文件的schema字段映射到数据库的schema是我们操作数据库的常用手段,这里我们就来整理一些Java的MyBatis框架中关键的XML字段映射的配置参数详解,需要的朋友可以参考下

    .net读写xml文档详解

    一 .Net框架中与XML有关的命名空间 System.Xml包含了一些和XML文档的读写操作相关的类,它们...System.Xml.Schema包含了和XML模式相关的类,这些类包括XmlSchema、XmlSchemaAll、XmlSchemaXPath以及XmlSchemaType等

    详解Java解析XML的四种方法

    对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Definition),XSLT(Extensible ...

    很实用的NLog配置分享

    前言 NLog是一个基于.NET平台编写的类库,我们可以使用NLog在应用程序中添加极为完善的跟踪调试代码。本文主要介绍的是关于NLog...&lt;nlog xss=removed xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance&gt; &lt;targets&gt;

    WebService描述语言WSDL详解

    为什么使用WSDL? WSDL 文档结构 WSDL 文件示例 ... XML schema运用于WSDL 的类型和消息中 XML schema运用之complex 类型 XML schema运用之数组 和元素 和元素 文档风格绑定 <service > 和元素

Global site tag (gtag.js) - Google Analytics