XSDL(XML Schema定义语言)由元素、属性、命名空间和XML文档种的其他节点构成的。
一、XSD中的元素
XSD文档至少要包含:schema根元素和XML模式命名空间的定义、元素定义。
1、schema根元素
语法如下:
<xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>
…
</xsd:schema>
在XSD中必须定义一个且只能定义一个schema根元素。根元素中包括模式的约束、XML模式命名空间的定义,其他命名空间的定义、版本信息、语言信息和其他一些属性。
2、元素
语法如下:
<xsd:element name=”user” type=”xsd:string” />
XSD中的元素是利用element标识符来声明的。其中name属性是元素的名字,type属性是元素值的类型,在这里可以是XML Schema中内置的数据类型或其他类型。
例子:
<xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>
<xsd:element name=”user” type=”xsd:string” />
</xsd:schema>
以上文档对应的有效XML文档如下:
<?xml version=”1.0”?>
<user>string</user>
在元素的定义中还有2个属性:minOccurs和maxOccurs。其中minOccurs定义了该元素在父元素中出现的最少次数(默认为1,值为大于等于0的整数),maxOccurs定义了该元素在父元素中出现的最多次数(默认为1,值为大于等于0的整数)。在maxOccurs中可以把值设置为unbounded,表示对元素出现的最多次数没有限制。
例子:
<xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema>
<xsd:element name=”user” type=”xsd:string” minOccurs=”0” maxOccurs=”unbounded” />
</xsd:schema>
表示为元素user的类型为string,出现的次数最少为0(也就是可选),最多不限制。
3、引用元素和替代
语法如下:
<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>
<xsd:element name=”user” type=”xsd:string” />
<xsd:element name=”name”>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref=”user” />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
引用是利用element标记符的ref属性实现的。主要适用于避免在文档中多次定义同一个元素,应当将经常使用的元素定义为根元素的子元素,以便在文档的任何地方引用它。
在这里还可以为某个定义的元素起一个别名(偶的理解^o^),方法如下:
<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>
<xsd:element name=”yonghu” type=”xsd:string” substitutionGroup=”user” />
<xsd:element name=”user” type=”xsd:string” />
<xsd:element name=”name”>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref=”user” />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
以上文档对应的有效XML文档如下:
<?xml version=”1.0”?>
<name>
<user>string</user>
</name>
或者:
<?xml version=”1.0”?>
<name>
<yonghu>string</yonghu>
</name>
主要是利用element标识符中的属性substitutionGroup实现的。
4、设置默认值和固定值
语法如下:
<xsd:element name=”city” type=”xsd:string” default=”xian” />
<xsd:element name=”country” type=”xsd:string” fixed=”china” />
通过default属性的设置,可以在XML文档中没有对city元素定义时赋予默认值。而使用fixed属性,可以给元素country设定一个固定的值china,并且不允许改变!
5、利用组合器控制结构
sequence组合器,定义了一列元素必须按照模式中指定的顺序显示(如果是可选的,也可以不显示)。语法如下:
<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>
<xsd:element name=”name”>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=”first” type=”xsd:string” />
<xsd:element name=”middle” type=”xsd:string” />
<xsd:element name=”last” type=”xsd:string” />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
all组合器,允许所定义的元素可以按照任意顺序显示,all元素的子元素在默认情况下是必须的,而且每次最多显示一次。语法如下:
<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>
<xsd:element name=”name”>
<xsd:complexType>
<xsd:all minOccurs=”0”>
<xsd:element name=”first” type=”xsd:string” />
<xsd:element name=”middle” type=”xsd:string” />
<xsd:element name=”last” type=”xsd:string” />
</xsd:all>
</xsd:complexType>
</xsd:element>
</xsd:schema>
choice组合器,允许指定多组声明中的一个,用于互斥情况。语法如下:
<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>
<xsd:element name=”name”>
<xsd:complexType>
<xsd:choice>
<xsd:element name=”first” type=”xsd:string” />
<xsd:element name=”middle” type=”xsd:string” />
<xsd:element name=”last” type=”xsd:string” />
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
二、定义属性
在XML Schema文档中可以按照定义元素的方法定义属性,但受限制的程度较高。它们只能是简单类型,只能包含文本,且没有子属性。可以应用在attribute元素定义中的属性如下:
default 初始默认值
fixed 不能修改和覆盖的属性固定值
name 属性的名称
ref 对前一个属性定义的引用
type 该属性的XSD类型或者简单类型
use 如何使用属性
form 确定attributeFormDefault的本地值
id 模式文档中属性唯一的ID
Default、fixed、name、ref和type属性与在element标记中定义的对应属性相同,但type只能是简单类型。Use属性的值可以是:optional(属性不是必须的,此为默认属性)、prohibited或者required(属性是强制的)。
1、创建属性
语法如下:
<xsd:attribute name=”age” type=”xsd:integer” />
该语句定义了一个名为age的属性,它的值必须是一个整数。把它添加到模式中时,它必须时schema元素、complexType元素或者attributeGroup元素的子元素。
例子:
<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>
<xsd:element name=”name”>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=”first” type=”xsd:string” />
</xsd:sequence>
<xsd:attribute name=”age” type=”xsd:integer” use=”optional” />
</xsd:complexType>
</xsd:element>
</xsd:schema>
以上文档对应有效的XML文档如下:
<?xml version=”1.0”?>
<name age=”27”>
<first>string</first>
</name>
如上所示,要把属性附加在元素上,属性应该在complexType定义中的组合器之后定义或引用。
分享到:
相关推荐
该项目是一个使用Go语言开发的多语言XML Schema定义编译器,它能够将XML模式定义文件转换成不同编程语言的类型或类声明。项目共包含65个文件,其中41个Go源文件,8个Markdown文档,4个YAML配置文件,1个Git忽略文件...
XML Schema定义了一系列的元素(element)、属性(attribute)和数据类型(data type),这些元素和属性规定了XML文档的结构。例如,`<element>`定义了一个命名的XML节点,可以是文档中的一个节点或子节点;`...
本案例主要讲解如何使用XML Schema定义描述图书馆藏书信息的XML标签。通过对这些标签的定义,我们可以确保XML文档包含的图书信息是符合规则和标准的。 首先,XML文档的根元素是`<Library>`,它包含了所有图书的信息...
- **XML Schema 定义**:XML Schema 是一种基于 XML 的语言,用于描述 XML 文档的结构。它定义了 XML 文档中可以出现的元素、属性及其结构,并且指定了元素和属性的数据类型。XML Schema 的完整名称为 XML Schema ...
3. **类型转换**:XML Schema定义了丰富的数据类型,库提供了将XML数据转换为Java对象,以及反之的功能。 4. **命名空间管理**:XML Schema支持命名空间,库能有效地管理和处理命名空间,确保正确解析和引用元素和...
在本实验"西工大服务计算实验2-1_XML Schema"中,你的任务是编写一个程序,生成符合特定XML Schema定义的XML文档。这涉及到对XML Schema的理解、XML文档的创建以及编程技术的应用。 首先,我们需要理解XML Schema的...
XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。 在此教程中,你将学习如何在应用程序中读取和创建 XML Schema 语言,XML Schema 为何比 DTD 更加强大,以及如何在您的应用程序中使用 XML ...
2. **XMLSchema**:这个类代表一个XML Schema定义。它可以用于验证XML文档,获取Schema中的元素、属性和其他组件的信息。 3. **XSModelGroup**:表示XML Schema中的模式组,用于组合其他模式元素,如选择(`...
在“XMLSchema例子”文件中,你将看到这些概念如何实际应用于具体的XML Schema定义和XML文档实例。通过学习和理解这些例子,你将能够更好地掌握XML Schema的使用,从而更有效地设计和验证XML文档的结构。
标题中的"AUTOSAR_MMOD_XMLSchema.zip"指的是一个与AUTOSAR(AUTomotive Open System ARchitecture)相关的压缩包文件,它包含了MMOD(Model-based Modeling and Development)的XML Schema定义。AUTOSAR是一种全球...
### XML Schema 定义详解 XML Schema是一种用于描述XML文档结构和内容的规范,它提供了比DTD(Document Type Definition)更强大的数据类型和结构控制能力。通过使用XML Schema,开发者可以定义XML文档中的元素和...
XML Schema语言也被称为XML Schema Definition (XSD)(XML Schema定义). -------------------------------------------------------------------------------- What You Should Already Know 你应该已经掌握的...
在XML应用开发中,XML Schema是一种重要的规范,用于定义XML文档的结构和数据类型。在本单元项目实践中,我们将学习如何使用XML Schema来定义描述网上订单信息的XML标签。这个实践旨在帮助我们掌握XML Schema的使用...
本文展示了模式的灵活性,说明如何使用XML Schema系统来定义最基本的XML文档构造块——元素。XML Schema比DTD更强大。为了说明XML Schema机制的强大功能,本文用三个程序清单简要比较了表示元素的不同方式。
XML Schema,全称为eXtensible Markup Language Schema,是用于定义XML文档结构...通过阅读《XMLSchema参考手册》,你可以深入了解其内部机制,提升XML文档的管理和验证能力,从而在开发过程中保证数据的质量和一致性。
`XmlSchema-1.4.6.jar` 是一个包含Java绑定的XML Schema API的库,它为处理XML Schema文档提供了支持。在开发Web服务客户端时,尤其是与基于SOAP(简单对象访问协议)的Web服务交互时,这个库扮演了至关重要的角色。...
XML Schema的作用是定义一份XML文档的合法组件群,就像DTD的作用一样。 XML Schema的主要功能包括: 1. 定义可以出现在文档里的元素 2. 定义可以出现在文档里的属性 3. 定义了哪些元素是子元素 4. 定义了子元素的...
XML Schema定义(XSD)使用XML语法,使得XML文档的验证和处理更加方便。在这个教程中,我们将深入探讨XML Schema的核心概念、优势以及如何在实际应用中使用。 1. XML Schema简介 XML Schema的主要目标是定义XML文档...
XML Schema中命名空间的使用是非常重要的,命名空间可以使我们能够从不同的词汇表中区分定义以及声明。目标命名空间使我们能够区分在XML Schema语言词汇表中的元素声明和在一个其他的假定的化学语言词汇表中的元素...
【XML与XMLSchema】 XML,全称可扩展标记语言(eXtensible Markup Language),是一种基于标准通用标记语言SGML的简化版本,由万维网联盟(W3C)于1996年开始制定,并在1998年2月10日发布了XML 1.0规范。它的设计...