XML,XML Schema,DTD

1 篇文章 0 订阅
一、摘录出处:http://blog.csdn.net/liujinwei2005/article/details/6297857

XML Schema 和DTD 都是用来定义各种文件中XML标记的使用规范.
XML Schema 是标准的XML文件,而DTD则使用自己的特殊语法,因此,只需要知道XML的语法
规则就可以编写Schema了,不需要再学习其它语法规则. 可以使用相同的处理器来解读,
XML文件与XML Schema文件.
XML Schema 利用命名空间将文件中特殊的节点与Schema说明相联系,一个XML文件可以有
多个对应的Schema ,若是DTD的话,一个XML文件只能有一个相对应的DTD文件.
XMLSchema 的内容模型是开放的,可以随意扩充,而DTD则无法解读扩充的内容.
DTD只能把文件类型定义为一个字符串,而XML Schema 却允许把文件类型定义为整数,浮
点数,字符串,布尔值或其他各各数据类型,而无须重新定义.

XMLSchema 相对DTD的明显优势是XMLSchema 文件本身也是XML文件,而不是像DTD那样使用
特殊格式,因而方便了用户和设计者. 因为他们可以使用相同的工具来处理与开发XML Schema
和其他的XML数据,而不必用专门的开发或处理工具. Schema会取代DTD.
补充:
DTD DTD不遵守XML语法 DTD不可扩展 DTD不支持命名空间的应用 DTD没有提供强大的数据类型支持,只能表示很简单的数据类型 Schema Schema完全基于XML语法 能用处理XML文档的工具处理 大大扩充了数据类型 支持原型,也就是元素的继承 支持属性组 开放性,可以多个Schema运用于一个XML文档

二、摘录出处:http://yesiwu.blog.163.com/blog/static/189678192200841741317894/

一个完整的XML Schema例子

这里举一个具体的例子来说明XML Schema的编写和具体的实例文档,让读者有一个感性的认识,假设有一个闲人叫令狐冲,他想在网上开一个书店,他需要把图书在网上展示出来,这样,他就需要在网上列出图书的目录。他建立的XML Schema如下所示(我们命名为bookstore.xsd):


<?xml version="1.0" encoding="GB2312"?>
<xsd:schema targetNamespace=http://www.example.com/IPO
xmlns:ipo="http://www.example.com/IPO" xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">

<xsd:element name="ISBN" type="xsd:string"/>
<xsd:element name="网上书城">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="图书集合" type="图书集合类型"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="书类型">
<xsd:sequence>
<xsd:element ref="ISBN"/>
<xsd:element name="名称" type="xsd:string"/>
<xsd:element name="作者" type="xsd:string" maxOccurs="unbounded"/>
<xsd:element name="页数" type="short"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="图书类别类型">
<xsd:sequence>
<xsd:element name="名称" type="xsd:string"/>
<xsd:element name="描述" type="xsd:string"/>
<xsd:element name="书" type="书类型" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="uid" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ESSAY"/>
<xsd:enumeration value="TECH"/>
<xsd:enumeration value="OTHER"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="图书集合类型">
<xsd:sequence>
<xsd:element name="图书类别" type="图书类别类型" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>


下面是一个具体的实例文档:

<?xml version="1.0" encoding="GB2312"?>
<ipo:网上书城 xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" xmlns:ipo="http://www.example.com/IPO" xsi:schemaLocation="http://www.example.com/HZH bookstore.xsd">
<图书集合>
<图书类别 uid="TECH">
<名称>科技类</名称>
<描述>关于科学技术方面的书籍</描述>
<书>
<ISBN>7-115-090029-7/TP.2000</ISBN>
<名称>"Visual Basic 6 XML专业书籍</名称>
<作者>James Britt</作者>
<作者>Teun Duynstee</作者>
<页数>565</页数>
</书>
<书>
<ISBN>7-111-07889-6</ISBN>
<名称>Building the Data Warehouse</名称>
<作者>W.H.Inmon</作者>
<页数>227</页数>
</书>
</图书类别>
<图书类别 uid="ESSAY">
<名称>散文类</名称>
<描述>关于人文精神思想类方面的书籍</描述>
<书>
<ISBN>7-80127-424-5/G.192</ISBN>
<名称>火与冰</名称>
<作者>余杰</作者>
<页数>382</页数>
</书>
</图书类别>
</图书集合>
</ipo:网上书城>

现在,我们可以来总结一个XML Sechma的一些优点:

1. 它具有丰富的数据类型,支持的数据类型包括字符串、字符型、整数、浮点数和数值型、布尔型、时间型、日期型、统一资源标识(URL)、全球唯一标识(UUID)、来自XML本身的类型(entity, entities, enumeration, id, idref, idrefs, nmotoken,nmotokens,notation等等),而且还支持由这些简单类型生成的更加复杂的类型,这个类似于C++中结构(struct)的概念,我们可以建立一个struct,它可以是对简单类型的一个扩展。

2. 可以由用户自己定义数据类型

3. 支持属性分组,属性的应用范围是多种多样的,有的是针对所有元素,有的则专门针对图形元素。

4. 支持名字空间。允许把文档中特殊的节点与模式中的类型说明联系起来。联系XML节点和DTD的唯一方法是通过DOCTYPE说明,即每一个文档只能使用一个DTD,但是可以由多个XML模式来描述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值