`

XML 文档定义的两种形式(DTD,SCHEMA)

    博客分类:
  • J2EE
阅读更多

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约束[dtd,Schema].zip

    为了确保XML文档的结构正确性与一致性,XML约束技术应运而生,主要有两种形式:DTD(Document Type Definition)和XML Schema。 **DTD(Document Type Definition)** DTD是XML的早期约束和验证机制,它定义了XML...

    XML Schema 与 XML DTD的技术比较与分析

    XML Schema 和 XML DTD 是两种用于定义XML文档结构和数据约束的语言。XML DTD(文档类型定义)是较早出现的规范,而XML Schema则在2001年成为W3C的正式推荐标准,旨在提供更强大和灵活的XML文档验证功能。 首先,...

    DTD和Schema

    **DTD(Document Type Definition)与XML Schema是XML文档结构定义的两种主要方法,它们用于确保XML文档遵循预定义的规则,从而保持数据的一致性和可读性。** **DTD(文档类型定义)**是XML规范早期引入的一种方式...

    XML.rar_dtd xml_xml dtd_xml schema_xml 设计

    在本主题中,我们将深入探讨如何利用DTD(Document Type Definition)和XML Schema来设计一个表示图书信息的XML文档。这两种方法都是为了确保XML文档结构的合法性与一致性。 首先,DTD是XML的早期验证机制,它定义...

    XML DTD,XmlSchema标准参考手册

    XML DTD(Document Type Definition)和XML Schema是两种主要的XML语义约束机制,用于定义XML文档的结构和数据类型。 XML DTD是最早的XML文档类型定义方式,它使用一套预定义的元素和属性来描述XML文档的结构。DTD...

    xml与DTD,xml与DTD

    DTD是用来定义XML文档结构的一种方式,它规定了文档中的元素、属性以及它们之间的关系。DTD可以帮助确保XML文档的格式正确无误,并且元素的使用符合预期。 ##### DTD的组成部分: - **元素定义**:定义了XML文档中...

    DTD_Schema.rar.rar_dtd_xml_xml schema

    在处理XML文档时,为了确保数据的一致性和准确性,我们通常会使用DTD(Document Type Definition)或XML Schema来定义文档的结构。这两个工具都是XML的约束机制,用于规定XML文档的元素、属性以及它们之间的关系。 ...

    xmlschema实验及答案.doc

    XML Schema是基于XML的_schema语言,是一种用于定义XML文档结构的语言。它是W3C制定的一个标准,用于描述XML文档的结构、约束和关系。XML Schema提供了一个强大的工具,用于定义和验证XML文档的结构和内容。 实验五...

    xml 面试题总结

    XML 解析技术和文档定义形式 XML(Extensible Markup Language)是...DTD 和 Schema 是两种常见的 XML 文档定义形式,每种形式都有其优缺点。在进行 XML 开发时,需要根据实际情况选择合适的解析技术和文档定义形式。

    XML文档约束之Schema

    XML Schema是XML的一种标准化约束机制,用于定义XML文档的结构和数据类型,确保数据的准确性和一致性。 XML Schema提供了比早期的DTD(Document Type Definition)更强大的功能,例如支持复杂数据类型、命名空间和...

    命名空间 dtd文件、Schema文件 (xsd)文件的引入1

    命名空间、DTD 文件和 Schema 文件的引入 在 XML 文档中,命名空间...命名空间、DTD 文件和 Schema 文件都是 XML 文档中的重要组成部分,它们可以用于约束 XML 文档的内容,确保 XML 文档的正确性和一致性。

    XMLSchema经典例题

    XML Schema,全称为XML Schema Definition (XSD),是一种用于描述XML文档结构和数据类型的规范,它是W3C(World Wide Web Consortium)所制定的标准。XML Schema的出现是为了替代早期的DTD(Document Type ...

    xml dom,sax解析,schema验证

    XML Schema(简称XSD)是一种XML格式的规范,用于定义XML文档的结构和数据类型。它比传统的DTD(Document Type Definition)更强大,支持复杂的数据类型、命名空间和更复杂的约束规则。在Xerces-C++中,我们可以使用...

    XML Schema用法

    例如,在一个书目XML文档的Schema中,`&lt;catalog&gt;`和`&lt;book&gt;`元素可能分别被定义为`catalogtype`和`elementtype`这两种类型,这些类型在Schema文档的其他部分会被详细定义。 XML Schema还提供了注解(annotation)...

    SCHEMA 官方文档 官方例子

    1. **基本概念**:XML Schema是W3C(万维网联合会)推荐的一种XML文档的类型定义语言。与DTD(Document Type Definition)类似,它允许开发者定义XML文档的元素、属性、数据类型和约束。SCHEMA相比DTD,提供了更强的...

    XML文档的学习pdf

    - **DTD的定义**:理解DTD如何定义XML文档中元素、属性和实体的结构和类型。 - **命名空间的规则**:学习如何正确地声明和使用命名空间。 ##### 2.3 本章难点 - **DTD的复杂性**:DTD可能包含复杂的规则和条件,...

    XML学习第一天之DTD入门

    DTD,Document Type Definition,是XML的一个重要组成部分,它定义了XML文档的结构和元素规则,帮助确保文档的合法性。 在XML学习的初始阶段,了解和掌握DTD是非常基础且关键的一步。DTD定义了XML文档的元素类型、...

    xml dtd xsd 标准格式

    DTD(Document Type Definition)和XSD(XML Schema Definition)是两种用来定义XML文档结构和数据类型的规范。 1. XML DTD:DTD是XML的早期规范,用于定义XML文档的元素、属性以及它们之间的关系。它通过一系列...

    解码XML和DTD

    文档类型定义(DTD,Document Type Definition)则是用来规范XML文档结构的一种工具。 创建XML DTD的主要目的是为了定义XML文档的结构和限制,确保XML文件的合法性。DTD通过一系列声明来规定XML文档中可以存在的...

    XML面试题及答案

    XML 文档定义有两种形式:DTD 和 Schema。DTD 是一种传统的文档类型定义语言,而 Schema 是一种基于 XML 的文档类型定义语言。Schema 的本质区别在于它是 XML 可以被 XML 解析器解析的。 4. XML 的定义和应用 XML ...

Global site tag (gtag.js) - Google Analytics