DTD的不足
语法结构问题:与XML语法不一致,不支持DOM、XPath、XSLT等
数据类型问题:有限的数据类型,不支持布尔、日期、时间等数据,不能扩展
文档结构问题:DTD中元素和属性是全局的,不是上下文相关的
名称空间问题:不支持名称空间
Schema的特点
Schema的优势
Schema是独立的XML文档,扩展名为.xsd
已经定义了丰富的数据类型,支持派生,支持格式约束
元素、属性具有上下文相关性
支持名称空间
Schema的不足
不能嵌入到XML文档中
语法较复杂
还不能定义属性和属性值的相关性,如若CPU的“厂商”为“Other”则必须在“描述”中声明
XML文档-》note.xml
DTD文档-》note.dtd
schema文档-》note.xsd
根元素schema
Schema文档的根元素schema的声明<?xml version="1.0" encoding="GB2312"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">Schema文档的根元素只能为schemaschema 中用到的元素和数据类型来自名称空间"http://www.w3.org/2001/XMLSchema”elementFormDefault和attributeFormDefault分别为qualified(限定的)和unqualified(非限定的),表明元素名称需要给出名称空间,而属性名不需要
名称空间的声明
Schema中对名称空间的声明:<xs:schema targetNamespace=“目标名称空间URL" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns=“默认名称空间URL">targetNamespace(目标名称空间):是引用该Schema的XML文档的名称空间,即XML文档中元素、属性、数据类型等名称的有限范围,对应的是一个URL,可以不是一个文件标准名称空间:即定义了Schema标准的名称空间,包括schema、element、simpleType、string等关键字、内置数据类型和标准的Schema语法等默认名称空间:即省略了名称空间前缀的名称所属的空间(可以与目标空间不同)
名称空间的引用
在XML文档中引用Schema的名称空间:其实这个特点的好处就是可以为特定的命名空间绑定特定的schema,一般情形使用前者即可,简单
若Schema文档中没有定义目标名称空间,则<元素名称 xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=“Schema文档URI">若Schema文档中已定义了目标名称空间,则<元素名称 xmlns=“默认空间URL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="目标空间URL
Schema文档URI">
例如
元素和属性的声明
在根元素schema下定义顶层子元素(top level element),在某元素内定义其子元素和属性
元素声明
<xs:element name=名称 type=类型/>
属性声明
<xs:attribute name=名称 type=类型 use=次数/>
数据类型
Schema的数据类型分为简单类型、复杂类型两种
复杂类型complexType
复杂类型定义XML元素的结构关系,如包含属性、子元素、子元素间的关系等例如
Schema中可定义“学生型”元素:
<xs:element name=“学生” type=“学生型”/>
只有元素的内容可以是复杂类型的
简单类型simpleType
简单类型的数据是XML最小的结构单位例如
定义了“编号型”数据类型,其基础类型为整型,因此
<xs:attribute name=“编号” type=“编号型”/>
<xs:element name=“编号” type=“编号型”/>
所定义的属性、元素的内容都必须是整型
若元素是简单类型,则不能包含子元素。对于属性而言,由于属性值不允许再分割,因此只能是简单类型
数据类型派生(Derivation)
与面向对象方法中类的派生相似,XML Schema支持数据类型的派生,即在已经定义的数据类型基础上,定义新的数据类型。可以在简单类型基础上派生新的简单类型或复杂类型,也可以在复杂类型基础上派生新的复杂类型。复杂类型的派生有扩展派生(extension)、约束派生(restriction)两种,简单类型的派生有扩展派生、约束派生、列表派生(list)、联合体派生(union)四种。最常见的派生是复杂类型的扩展派生、约束派生和简单类型的约束派生例如
Schema的内部数据类型
Schema内置了许多数据类型,包括字符串、数值、逻辑、日期时间、URI等,其中大部分是简单类型。默认类型可以是anyType或anySimpleType。
只有部分内置的数据类型属于原始类型(Primitive),即不能通过取值约束方式从其他数据类型派生出来的数据类型,这些数据类型包括:
字符型:string、QName、NOTATION
数值型:float、double、decimal逻辑型:boolean
日期时间型:date、time、duration、eYear、……
URI型:anyURI二进制:base64Binary、hexBinary
复杂类型complexType
complexType定义复杂数据类型,声明元素的属性、子元素、文本内容等
复杂数据类型可以是具名的,也可以是匿名的
具名复杂类型(必须有name属性)只能定义在schema元素下,是全局的
匿名复杂类型(不能有name属性)只能出现在element元素下,是局部的若complexType的父元素是schema或redifine,就必须有一个simpleContent或complexContent子元素。
若父元素是element,则可以包含attribute、group等子元素。
complexContent
complexContent是complexType的子元素,表示该complexType将显式地从其他complexType派生。
complexContent必须有一个子元素extension或restriction来扩展或约束complexType的定义
simpleContensimpleContent用于从simpleType派生complexType,表示该complexType只有文本内容,没有子元素
简单类型simpleType
simpleType定义从Schema已定义的简单类型再派生的简单类型,简单类型不能再包含任何元素或属性简单数据类型也可以分为具名的或匿名的具名简单类型有name属性,只能定义在schema元素下,是全局的匿名简单类型不能有name属性,可以出现在element、attribute、list、restriction、union元素下,是局部的complexType必须有一个子元素,可以是list、union或restriction之一
array.xsd:
array.xml
扩展entension
列表
list.xsd
并union
选择choice······
数据取值
Schema的优势之一是允许对数据的取值进行综合设置,可以定义数据的取值范围、输入和显示方式,等等。
取值约束
对简单类型,可以采用取值约束限制数据的取值:
长度限制:length、maxLength、minLength
大小限制:maxExclusive、minExclusive、maxInclusive、minInclusive
精度限制:fractionDigits、totalDigits
模式匹配:pattern(正则表达式)
空白处理:whiteSpace
枚举类型:enumeration
键key和键引用
keyrefKey元素定义键约束,键的值由一个或多个字段组成,在实例文档中,对于包含键的的元素,键值必须是唯一的已定义的键可以被keyref元素通过refer属性引用,以构成键引用约束在key元素中,从包含元素开始,用selector元素选出key的参考元素,在参考元素基础上,用field元素选出键值
keyref.xsd
keyref.xml
外部文档
导入import所导入的Schema的目标名称空间(由根元素schema的targetNameSpace属性声明)不能与当前Schema的目标名称空间相同如果所导入的Schema没有目标名称空间,则其中的定义和说明都不会被导入包含include若要包含的Schema具有目标名称空间,则必须与当前Schema相同若没有声明目标名称空间,则所包含的声明和定义都与当前Schema合并为一个整体
分享到:
相关推荐
`XmlSchema-1.4.6.jar` 是一个包含Java绑定的XML Schema API的库,它为处理XML Schema文档提供了支持。在开发Web服务客户端时,尤其是与基于SOAP(简单对象访问协议)的Web服务交互时,这个库扮演了至关重要的角色。...
【XML与XMLSchema】 XML,全称可扩展标记语言(eXtensible Markup Language),是一种基于标准通用标记语言SGML的简化版本,由万维网联盟(W3C)于1996年开始制定,并在1998年2月10日发布了XML 1.0规范。它的设计...
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> </xs:schema> ``` 这个例子定义了一个`person`元素,包含`firstName`和`lastName`两个子元素,都是字符串类型。 2. **验证XML文档**:...
`xmlschema-core-2.0.3.jar` 是一个Java库,专门用于解析和操作XML Schema文档,它支持XML Schema 1.1标准。 在Spring Web服务中,XML Schema Core库扮演着关键角色。Spring Web Service框架是基于合同优先...
XmlSchema-1.4.7.jar 是一个Java库,它实现了W3C的XML Schema标准,用于处理XML Schema文档。这个版本(1.4.7)可能是该库的一个稳定版本,提供给用户免费使用。XML Schema是XML的一种规范,定义了如何验证XML文档的...
XmlSchema-1.2.jar,xmlschema-1.2.jar,xml.jar
XML Schema是目前国际标准的XML建模工具,本文将对XML Schema进行详细的介绍,帮助读者初步掌握XML Schema的使用方法和XML Schema文档实例的具体语义。 1. 命名空间的使用 XML Schema中命名空间的使用是非常重要的...
"XML Schema知识点" XML Schema是XML语言为基础的,它用于可替代DTD。它用于描述XML文档的结构。XML Schema语言也被称为XML Schema Definition(XSD)。XML Schema的作用是定义一份XML文档的合法组件群,就像DTD的...
### XML Schema 教程知识点详解 #### 一、XML Schema 概述 - **XML Schema 定义**:XML Schema 是一种基于 XML 的语言,用于描述 XML 文档的结构。它定义了 XML 文档中可以出现的元素、属性及其结构,并且指定了...
XML Schema,全称为XML Schema Definition,是用于定义XML文档结构和数据类型的规范,它是W3C(World Wide Web Consortium)制定的一种标准。在本实验"西工大服务计算实验2-1_XML Schema"中,你的任务是编写一个程序...
XML Schema 简介 XML Schema 是一种基于 XML 的 DTD 替代者,它可以描述 XML 文档的结构。XML Schema 语言也可作为 XSD(XML Schema Definition)来引用。为了学习 XML Schema,需要具备的基础知识包括 HTML、XHTML...
XmlSchema-1.1.jar XmlSchema-1.1.jar
XML Schema实验及答案 XML Schema是基于XML的_schema语言,是一种用于定义XML文档结构的语言。它是W3C制定的一个标准,用于描述XML文档的结构、约束和关系。XML Schema提供了一个强大的工具,用于定义和验证XML文档...
赠送jar包:xmlschema-core-2.1.0.jar; 赠送原API文档:xmlschema-core-2.1.0-javadoc.jar; 赠送源代码:xmlschema-core-2.1.0-sources.jar; 赠送Maven依赖信息文件:xmlschema-core-2.1.0.pom; 包含翻译后的API...
在“XMLSchema经典例题”中,我们可以深入探讨以下几个核心知识点: 1. **基本元素和类型定义**:XML Schema允许定义基本数据类型,如字符串、整数、浮点数等,并且可以自定义复杂的数据类型。例如,你可以创建一个...
在描述中提到的"apache的xmlschema jar包的api文档"是开发者理解和使用这个API的关键资源。它通常包含详细的方法、类和接口的说明,以及如何使用它们的例子。这些文档能够帮助开发者了解如何在Java程序中导入和使用...
好不容易找到的XmlSchema-1.4.7 jar包,需要的同学速度下载吧。不黑心,只要1分~~~
这个“XMLSchema.chm”文件很可能是一个帮助文档,旨在为学习XML Schema的用户提供详细的指导和参考资料。下面我们将深入探讨XML Schema的相关知识点。 1. **XML Schema的作用**:XML Schema的主要功能是规范XML...
标题中的"AUTOSAR_MMOD_XMLSchema.zip"指的是一个与AUTOSAR(AUTomotive Open System ARchitecture)相关的压缩包文件,它包含了MMOD(Model-based Modeling and Development)的XML Schema定义。AUTOSAR是一种全球...
xmlschema-core-2.0.3.jar;xmlschema-core-2.0.3.jar;xmlschema-core-2.0.3.jar