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 Schema是XML文档的约束机制,用于定义XML文档的结构和内容。它是XML 1.0规范的一部分,提供了一个强大的工具来描述和验证XML文档。 XML Schema的优点是: * 强大的描述能力:XML Schema可以...
Xerces-J 是该项目针对 Java 语言的实现,而 "Xerces-J-tools.2.11.0-xml-schema-1.1-beta.zip" 是这个解析器的一个特定版本,包含了支持 XML Schema 1.1 beta 版本的功能。 **1. XML Schema** XML Schema 是 W3C ...
### XML Schema 教程知识点详解 #### 一、XML Schema 概述 - **XML Schema 定义**:XML Schema 是一种基于 XML 的语言,用于描述 XML 文档的结构。它定义了 XML 文档中可以出现的元素、属性及其结构,并且指定了...
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> </web-app> ``` 这里的`xmlns`和`xsi`属性定义了XML Schema的...
**扩展XML Schema Validator--MSV详解** XML(eXtensible Markup Language)作为一种标记语言,广泛应用于数据交换、配置文件存储等领域。为了确保XML文档遵循特定的结构和规则,XML Schema(XSD)应运而生,它为...
XML Schema详解.ppt这个文件很可能包含了详细的PPT讲解,涵盖了XML Schema的基础概念、语法、实例分析和最佳实践等内容。通过深入学习这个PPT,你可以更好地理解和掌握XML Schema的使用,提升XML文档的管理和开发...
**XMLSchema库详解** XMLSchema(XML Schema)是一种用于定义XML文档结构和数据类型的规范,它为XML提供了形式化的语义定义。在Python编程环境中,有许多库用于处理XML,但`xmlschema`库是一个专门针对XML Schema的...
**Schema-Workbench工具详解** Schema-Workbench是一款基于Mondrian的数据模型设计工具,它为多维数据集(OLAP)提供了强大的设计和管理功能。在深入理解Schema-Workbench之前,我们先来了解Mondrian。Mondrian是一...
这个压缩包“XML XML Schema XSLT 2.0和XQuery开发详解”包含了与这些技术相关的源代码示例。这些示例通常会涵盖以下方面: 1. **XML文档结构**:示例可能包括不同类型的XML文档,展示如何创建符合XML语法规则的...
文件名"protocol-buffers-schema-master"可能暗示项目主分支或者包含整个项目的压缩包。 总之,"前端开源库-protocol-buffers-schema"提供了一种在JavaScript环境下处理protobuf模式的能力,这对于需要与protobuf...
《基于XML模式的XML解析器生成器:rust-xml-schema详解》 在IT行业中,XML(eXtensible Markup Language)作为一种数据交换和存储格式,广泛应用于数据序列化、配置文件以及网络通信等领域。XML Schema(XSD)则是...
**cXML - Ariba Schema详解** cXML,全称为Commerce XML,是一种基于XML(可扩展标记语言)的商业数据交换标准。它旨在提供一个统一的、开放的平台,用于企业间进行电子数据交换,特别是在B2B(Business-to-...
### XML Schema核心知识点详解 #### 一、XML Schema概述与应用价值 XML Schema是一种用于定义XML文档结构和内容的有效工具,由W3C组织制定。它不仅提供了强大的功能来规范XML文档,还允许开发者通过一系列复杂的...
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3school.com.cn file:///D:/_dev_stu/xsdtest/src/note.xml"> <to>George <from>John <heading>Reminder <body>Don'...
### Solrconfig.xml 和 Schema.xml 说明 #### Solrconfig.xml 概述 Solrconfig.xml 是 Apache Solr 的核心配置文件之一,主要用于定义 Solr 实例如何处理文档的索引与查询请求。该文件中包含了多种配置项,用于...
### XML Schema 教程知识点详解 #### 一、XML Schema 简介 XML Schema是一种用于描述XML文档结构的语言,被视为DTD(Document Type Definition)的替代品,具有更丰富的特性和更高的灵活性。XML Schema(也常称为...
XML Schema 内置类型详解 XML Schema 内置类型是 XML 文档中使用的基本数据类型,它们可以分为基础类型和派生类型两类。基础类型是解析系统直接支持的原始类型,而派生类型是对基础类型或其他内置派生类型加以限制...
对于XML处理的细节,开发者还需要熟悉XML的语法规则,包括元素、属性、命名空间、DTD(文档类型定义)或XSD(XML Schema)等概念。 总之,"xml-binding XML解析器"是C++开发者处理XML数据的一种强大工具,它基于...