XML之DTD1

过马路我们都知道要走人行横道,开车要靠右行驶......这些都是我们熟知的交通法则。那么在XML中也有一套法则——DTD,让我们来认识一下它吧。

定义与用途

DTD定义XML文件的结构;为XML文件提供语法与规则;内容 既可以定义在XML文件中,也可以定义在XML文件之外;使用XML进行数据交换的行业和组织可定义自己的DTD;DTD对于XML是可选的内容。

为什么要使用DTD?为了正确交换数据,XML文件需要确定的结构。

XML内置DTD内容:

<?xml version="1.0" encoding="utf-8"?>
<DOCTYPE 书籍列表[
     <!ELEMENT 书籍列表(计算机书籍)*>
     <!ELEMENT 计算机书籍(书名,价格,简要介绍)>
     <!ELEMENT 书名(#PCDATA)>
     <!ELEMENT 价格(#PCDATA)>
     <!ELEMENT 简要介绍(#PCDATA)>
    ]>
<书籍列表>
     <计算机书籍>
           <书名>XML的今生今世</书名>
           <价格>66.66</价格>
           <简要介绍>
            该书详细描写XML的从出生到衰老的整个过程
           </简要介绍>
     </计算机书籍>
</书籍列表>
外部DTD:

DTD文件book.dtd:

<?xml version="1.0" encoding="utf-8"?>
<!ELEMENT 书籍列表(计算机书籍)*>
<!ELEMENT 计算机书籍(书名,简要介绍)>
<!ELEMENT 书名(#PCDATA)>
<!ELEMENT 价格(#PCDATA)>
<!ELEMENT 简要介绍(#PCDATA)>
使用外部DTD文件的XML文件
<?xml version="1.0" encoding="utf-8">
<!DOCTYPE 书籍列表 SYSTEM "book.dtd">
每个XML文档单独定义的DTD推广位一个系统内共享的公用DTD,关键字SYSTEM用于引用一个作者或组织所编写的众多XML文档中通用的DTD。另一种外部DTD,一个由权威机构制定的,提供给特定行业或公众使用的DTD。关键字是PUBLIC。
结构
所有的XML文档(以及HTML文档)均由以下简单的构建模块构成:元素、属性、实体、PCDATA、CDATA。

PCDATA的意思是被解析的字符数据(Parsed character data),是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。

CDATA的意思当然就是字符数据(character data),是不会被解析器解析的文本。在这些文本中的标签不会被当做标记来对待,其中的实体也不会被展开。

定义元素

在一个DTD中,元素通过元素声明来进行声明

声明一个元素:<!ELEMENT 元素名称 类别>或者<!ELEMENT 元素名称(元素内容)>

声明空元素:<ELEMENT 元素名称 EMPTY>

声明只有PCDATA的元素:<!ELEMENT 元素名称 (#PCDATA)>

声明带有任何内容的元素:<!ELEMENT 元素名称 ANY>

声明带有子元素(序列)的元素:<!ELEMENT 元素名称 (子元素名称1,子元素名称2,......)>,当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中。在一个完整的声明中,子元素也必须被声明,同时子元素也可拥有子元素。

声明只出现一次的元素:<!ELEMENT 元素名称 (子元素名称)>

声明最少出现一次的元素:<!ELEMENT 元素名称 (子元素名称+)>

声明出现零次或多次的元素:<!ELEMENT 元素名称 (子元素名称*)>

声明出现零次或一次的元素:<!ELEMENT 元素名称 (子元素名称?)>

声明“非.../既...”类型的内容:

例子:<!ELEMENT note(to,from,header,(message|body))>

声明混合型的内容:

例子:<!ELEMENT note (#PCDATA|to|from|header|message)*>

定义元素的属性

在DTD中,属性通过ATTLIST声明来进行声明。

声明属性:<!ATTLIST 元素名称 属性名称 属性类型 默认值>

以下是属性类型的选项:


默认值参数可使用下列值:

小结

通过学习,我们知道了怎么描述XML文档的结构,如何使用DTD定义一个XML文档的合法元素,以及如何在您的XML内部或者作为一个外部引用来声明DTD。您已经学习了如何为XML文档声明合法的元素、属性。如果你认为到这里DTD就学完了,那就大错特错了,请期待下一篇博客,我们将继续DTD的学习。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇