XML DTD是目前使用比较广泛的一种XML模式,而XML SCHEMA是W3C官方推荐的XML定义格式。
DTD 指定:可以在文档中存在的元素、那些元素可以具有的属性、在元素内部元素的层次结构以及元素在整个文档中出现的顺序。
XML Schema 是基于 XML 的 DTD 替代者。XML Schema 可描述 XML 文档的结构。XML Schema 语言也可作为 XSD(XML Schema Definition)来引用。
结构良好的XML文档——如果某个文档符合XML语法规范,那么我们就说这个文档是“结构良好”的文档。使用本书讲到的XMLSpy 2006工具就可以测试某文档是否为结构良好的XML文档。
有效的XML文档——所谓有效的XML文档是指通过了DTD的验证的,具有良好结构的XML文档,在此大家要明白XML文档可分为结构良好的XML文档和有效的XML文档,以及他们之间的关系。即具有结构良好的XML文档并不一定就是有效的XML文档,反之一个有效的XML文档必定是一个结构良好的XML文档。
xml schema 与 xml dtd 区别:
XML Schema和DTD都用于文档验证,但二者还有一定区别,本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的)。另外:
XML Schema是内容开放模型,可扩展,功能性强;而DTD可扩展性差;
XML Schema支持丰富的数据类型,而DTD不支持元素的数据类型,对属性的类型定义也很有限;
XML Schema支持命名空间机制,而DTD不支持;
XML Schema可针对不同情况对整个XML文档或文档局部进行验证;而DTD缺乏这种灵活性;
XML Schema完全遵循XML规范,符合XML语法,可以和DOM结合使用,功能强大;而DTD语法本身有自身的语法和要求,难以学习;
1. 最简单的Schema文档
如何写一个最简单的XML Schema文档呢?
首先,我们写出一个最简单的XML文档。
hello.xml
-------------------
<?xml version="1.0"?>
<greeting>Hello World!!</greeting>
<!--一个根元素:greeting;且这个元素不含属性,无子元素,内容是字符串。-->
hello.xsd
----------
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="greeting" type="xsd:string"/>
</xsd:schema>
XML Schema文档后缀名是.xsd,完全符合XML语法,根元素是schema,命名空间xmlns:xsd="http://www.w3.org/2001/XMLSchema,用元素<element>定义实例文档中的元素,如greeting。
2. 含子元素的Schema文档
假设实例文档是如下的:
customer.xml
-----------
<customer>
<name>teiki</name>
<address>No.237, Road Waitan, Shanghai</address>
</customer>
则可以写出以下的XML Schema文档:
customer.xsd
----------------
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="customer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="address" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
实例文档customer.xml中,<customer>元素含有两个子元素,所以我们在Schema文档中采用ComplexType来定义该元素。sequence表示子元素依次出现的顺序。
3. 含子元素和孙元素的Schema文档
这次我们给出一个更加复杂一些的文档:
customer.xml
---------------
<customer>
<name>Teiki</name>
<address>
<!-- address追加一个地址子元素 -->
<prefecture>Zhejiang</prefecture>
<city>Hangzhou</city>
<street>Xilu Road, No.121, 7F</street>
</address>
</customer>
为此,我们需要一个更加复杂一点的Schema文档:
address.xsd
-----------------
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="customer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<!-- 追加子元素address-->
<xsd:element name="address">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prefecture" type="xsd:string"/>
<xsd:element name="city" type="xsd:string" />
<xsd:element name="street" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
不过,我们还可以采用ref元素来重新编写这个Schema文档:
address2.xsd
----------------------
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="customer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element ref="address"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="address">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prefecture" type="xsd:string"/>
<xsd:element name="city" type="xsd:string" />
<xsd:element name="street" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
使用ref元素可以直接将其指向另一个模块,使文档更加具有可读性。
相关推荐
为了确保XML文档的结构正确性与一致性,XML约束技术应运而生,主要有两种形式:DTD(Document Type Definition)和XML Schema。 **DTD(Document Type Definition)** DTD是XML的早期约束和验证机制,它定义了XML...
XML Schema 和 XML DTD 是两种用于定义XML文档结构和数据约束的语言。XML DTD(文档类型定义)是较早出现的规范,而XML Schema则在2001年成为W3C的正式推荐标准,旨在提供更强大和灵活的XML文档验证功能。 首先,...
**DTD(Document Type Definition)与XML Schema是XML文档结构定义的两种主要方法,它们用于确保XML文档遵循预定义的规则,从而保持数据的一致性和可读性。** **DTD(文档类型定义)**是XML规范早期引入的一种方式...
在本主题中,我们将深入探讨如何利用DTD(Document Type Definition)和XML Schema来设计一个表示图书信息的XML文档。这两种方法都是为了确保XML文档结构的合法性与一致性。 首先,DTD是XML的早期验证机制,它定义...
XML DTD(Document Type Definition)和XML Schema是两种主要的XML语义约束机制,用于定义XML文档的结构和数据类型。 XML DTD是最早的XML文档类型定义方式,它使用一套预定义的元素和属性来描述XML文档的结构。DTD...
DTD是用来定义XML文档结构的一种方式,它规定了文档中的元素、属性以及它们之间的关系。DTD可以帮助确保XML文档的格式正确无误,并且元素的使用符合预期。 ##### DTD的组成部分: - **元素定义**:定义了XML文档中...
在处理XML文档时,为了确保数据的一致性和准确性,我们通常会使用DTD(Document Type Definition)或XML Schema来定义文档的结构。这两个工具都是XML的约束机制,用于规定XML文档的元素、属性以及它们之间的关系。 ...
XML Schema是基于XML的_schema语言,是一种用于定义XML文档结构的语言。它是W3C制定的一个标准,用于描述XML文档的结构、约束和关系。XML Schema提供了一个强大的工具,用于定义和验证XML文档的结构和内容。 实验五...
XML 解析技术和文档定义形式 XML(Extensible Markup Language)是...DTD 和 Schema 是两种常见的 XML 文档定义形式,每种形式都有其优缺点。在进行 XML 开发时,需要根据实际情况选择合适的解析技术和文档定义形式。
XML Schema是XML的一种标准化约束机制,用于定义XML文档的结构和数据类型,确保数据的准确性和一致性。 XML Schema提供了比早期的DTD(Document Type Definition)更强大的功能,例如支持复杂数据类型、命名空间和...
命名空间、DTD 文件和 Schema 文件的引入 在 XML 文档中,命名空间...命名空间、DTD 文件和 Schema 文件都是 XML 文档中的重要组成部分,它们可以用于约束 XML 文档的内容,确保 XML 文档的正确性和一致性。
XML Schema,全称为XML Schema Definition (XSD),是一种用于描述XML文档结构和数据类型的规范,它是W3C(World Wide Web Consortium)所制定的标准。XML Schema的出现是为了替代早期的DTD(Document Type ...
XML Schema(简称XSD)是一种XML格式的规范,用于定义XML文档的结构和数据类型。它比传统的DTD(Document Type Definition)更强大,支持复杂的数据类型、命名空间和更复杂的约束规则。在Xerces-C++中,我们可以使用...
例如,在一个书目XML文档的Schema中,`<catalog>`和`<book>`元素可能分别被定义为`catalogtype`和`elementtype`这两种类型,这些类型在Schema文档的其他部分会被详细定义。 XML Schema还提供了注解(annotation)...
1. **基本概念**:XML Schema是W3C(万维网联合会)推荐的一种XML文档的类型定义语言。与DTD(Document Type Definition)类似,它允许开发者定义XML文档的元素、属性、数据类型和约束。SCHEMA相比DTD,提供了更强的...
- **DTD的定义**:理解DTD如何定义XML文档中元素、属性和实体的结构和类型。 - **命名空间的规则**:学习如何正确地声明和使用命名空间。 ##### 2.3 本章难点 - **DTD的复杂性**:DTD可能包含复杂的规则和条件,...
DTD,Document Type Definition,是XML的一个重要组成部分,它定义了XML文档的结构和元素规则,帮助确保文档的合法性。 在XML学习的初始阶段,了解和掌握DTD是非常基础且关键的一步。DTD定义了XML文档的元素类型、...
DTD(Document Type Definition)和XSD(XML Schema Definition)是两种用来定义XML文档结构和数据类型的规范。 1. XML DTD:DTD是XML的早期规范,用于定义XML文档的元素、属性以及它们之间的关系。它通过一系列...
文档类型定义(DTD,Document Type Definition)则是用来规范XML文档结构的一种工具。 创建XML DTD的主要目的是为了定义XML文档的结构和限制,确保XML文件的合法性。DTD通过一系列声明来规定XML文档中可以存在的...
XML 文档定义有两种形式:DTD 和 Schema。DTD 是一种传统的文档类型定义语言,而 Schema 是一种基于 XML 的文档类型定义语言。Schema 的本质区别在于它是 XML 可以被 XML 解析器解析的。 4. XML 的定义和应用 XML ...