有效的XML: DTD(文档类型定义)介绍(转)

文档类型定义和命名空间

  有效(Valid)的XML文档

  首先,XML文档是个格式正规的(Well-formed)XML文档;(见格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节)。

  其次,需要满足DTD的要求,这样的XML文档称为有效的(Valid)XML文档

 

 

DTD

  DTD,即文档类型定义——Document Type Definition。

  DTD用来描述XML文档的结构,

  一个DTD文档包含:

  元素(ELEMENT)的定义规则;

  元素之间的关系规则;

  属性(ATTLIST)的定义规则;

  可使用的实体(ENTITY)或符号(NOTATION)规则。

 

 

DTD文档与XML文档实例的关系

  类与对象;

  数据库表结构与数据记录;

 

  有了DTD,每个XML文件可以携带一个自身格式的描述。

  有了DTD,不同组织的人可以使用一个通用DTD来交换数据。

  应用程序可以使用一个标准DTD校验从外部世界接收来的XML数据是否有效。

  可以使用DTD校验自己的XML数据。

 

 

如何生成DTD文档

  DTD文档有三种应用形式:

  1.内部DTD文档

<!DOCTYPE 根元素[定义内容]>

 

  2.外部DTD文档

<!DOCTYPE 根元素 SYSTEM "DTD文件路径">

 

  3.内外部DTD文档结合

<!DOCTYPE 根元素 SYSTEM "DTD文件路径" [定义内容]>

 

 

 

内部DTD 

   一个内部DTD的例子:

  上半部分是DTD,下面是XML文档,文档要符合DTD。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem [
    <!ELEMENT poem (author, title, content)>
    <!ELEMENT author (#PCDATA)>
    <!ELEMENT title (#PCDATA)>
    <!ELEMENT content (#PCDATA)>
]>
<!--为元素poem定义了三个子元素author title content,
这三个元素必须要出现并且必须按照这个顺序
少元素不行,多元素也不行
-->
<!--指明author,title,content里面的内容是字符串类型-->
<poem>
    <author>王维</author>
    <title>鹿柴</title>
    <content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content>
</poem>

   

  上面的文档就是格式良好,并且有效的。

  详见其中的注释。

  #PCDATA(Parsed Character Data) ,可解析的字符数据,即字符串。

 

  上面部分是DTD,在下面编写XML文档时,如果不符合其DTD规范,用XMLSpy做检查的时候,是well-formed的,但是却不是valid的。

  比如根元素写:

<Students>
</Students>

 

  Validate检查的时候就会报错,根元素和DTD中的poem不符。

 

 

外部DTD

  上面是一个内部DTD的例子,下面用一个外部的DTD:

  首先,新建一个DTD文档,文件名叫dtd_1.dtd,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT poem (author, title, content)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>

 

  然后,新建一个XML文档。

  如果只写XML元素内容,那么它是一个格式良好的,却不是有效的文档,因为找不到DTD。

  需要加入外部DTD文件的名称(同一个路径下只给出文件名即可)。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem SYSTEM "dtd_1.dtd">
<poem>
    <author>王维</author>
    <title>鹿柴</title>
    <content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content>
</poem>

 

 

内外部DTD结合

      DTD的内容也可以有些放在外部,有些放在内部,如下:

  文件dtd_2.dtd

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>

  XML文档:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE poem SYSTEM "dtd_2.dtd"[
<!ELEMENT poem (author, title, content)>
<!ELEMENT content (#PCDATA)>
]>
<poem>
    <author>王维</author>
    <title>鹿柴</title>
    <content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content>
</poem>

 

http://www.cnblogs.com/mengdd/archive/2013/05/28/3102893.html

 

时间: 2024-08-23 15:47:10

有效的XML: DTD(文档类型定义)介绍(转)的相关文章

第8章 文档类型定义和合法性(2)

XML教程<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  8.5.3 子元素列表 由于SEASON元素被声明为可以接受任何元素作为子元素,因而可以接受各种各样的元素.当遇到那些多多少少有些非结构化的文本,如杂志文章时,这种情况就很有用.这时段落.副栏.项目列表.序号列表.图形.照片以及子标题可出现在文档的任意位置.然而,有时可能想对数据的安排上多实行些规则和控制.例如

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一3.3.1 文档类型定义

3.3.1 文档类型定义 提供DTD的方式有多种.可以像下面这样将其纳入到XML文档中: 正如你看到的,这些规则被纳入到DOCTYPE声明中,位于由[...]限定界限的块中.文档类型必须匹配根元素的名字,比如我们例子中的conf?iguration. 在XML文档内部提供DTD不是很普遍,因为DTD会使文件长度变得很长.把DTD存储在外部会更具意义,SYSTEM声明可以用来实现这个目标.你可以指定一个包含DTD的URL,例如: 或者 警告:如果你使用的是DTD的相对URL(比如"conf?ig.

W3C XML Schema与文档类型定义(DTD)比较

许多开发者都期待着 XML 模式能够很快取代 DTD 用于指定 XML 文档类型.尽管 David Mertz 相信 XML 模式在开发者宝库中是一种无价工具,但他对该模式将替代 DTD 持怀疑态度."XML 问题"专栏的这一部分逐步尝试对模式和 DTD 进行比较,并阐明在 XML 模式世界中发生的事件. 虽然 W3C XML Schema在许多场合中胜过 DTD,但仍然还有一些 DTD更胜一筹的领域.开发者要不断地进行艰难的选择(这在 XML世界中是司空见惯的事).让我们开始对其中一

CSS初学:DOCTYPE文档类型及浏览器的模式介绍

css|初学|浏览器 DOCTYPE文档类型常常让新手们困惑,这到底是什么东西.其实这只是一组机器可读的规划,虽然中间包含了文件的URL,但浏览器不会去读取这些文件,只是用于识别.然后决定以什么样的规划去执行页面中的代码. DTD是指文档类型定义,它们定义XML.XHTML.HTML的特定的某一个版本中,可以有什么,不可以有什么,在载入网页的时候,浏览器会用既定的声明规划去检查页面的内容,是不是有效,是不是违规,然后采取相应的措施与编码解释文档中的代码. 我们不去深入的了解它是什么工作的,因为它

java xml-用eclipse编辑java中的XML,怎么插入.dtd文档??

问题描述 用eclipse编辑java中的XML,怎么插入.dtd文档?? 在java中,XML用来布局管理时,怎么在eclipse插入解析XML的.dtd文档,在插入时,其中key type和key分别填什么??求大神指教. 解决方案 http://danne823.iteye.com/blog/847706

学习网页Web标准:DOCTYPE(文档类型)基础知识

web|web标准|网页 DOCTYPE(文档类型)DOCTYPE是document type(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本. 他们是什么和他们为什么是重要的? 所有的HTML和XHTML文档必须有一个有效的doctype声明. Doctype规定了文档使用的HTML或XHTML的版本. 当校验的时候doctype被校验器使用,WEB浏览器通过它来决定那种渲染模式被使用. Doctype影响设备渲染web页面的方式. 如果文档使用了正确的doctype,一些浏

初学者认识DOCTYPE(文档类型)的基础知识

初学 DOCTYPE(文档类型)DOCTYPE是document type(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本. 他们是什么和他们为什么是重要的? 所有的HTML和XHTML文档必须有一个有效的doctype声明. Doctype规定了文档使用的HTML或XHTML的版本. 当校验的时候doctype被校验器使用,WEB浏览器通过它来决定那种渲染模式被使用. Doctype影响设备渲染web页面的方式. 如果文档使用了正确的doctype,一些浏览器将切换到标准模式

Web标准:文档类型和网页浏览器

原文: http://www.alistapart.com/articles/beyonddoctype 作者:Aaron Gustafson .Com  译者:zhaozy in 3user.com .Com 转载请注明作者和译者信息,谢谢! 进步总是要有代价的. 对网页浏览器来说, 由于开发者像是宣传真理一样的拍着胸部担保着一些编辑器和浏览器(特别是Internet Explorer), 用户们为此花费很多的成本. 而当这个浏览器推出了一个新版本, 然后又修正了之前版本的一些错误和对规范的误

学习Web标准 给你的网页选择合适的文档类型

web|web标准|网页 你做了所有你认为正确的事情,但页面在最新的浏览器里并不能正确表现.那是你书写了无效的XHTML和CSS.你使用了W3C标准的文档对象模型(DOM)来操作页面动态元素.而在浏览器去表现这些标准时,你的站点失效了.这很有可能就是一个错误的文档类型(DOCTYPE)导致的.这篇文章就是为你提供DOCTYPE是如何工作的,还有解释一些实际真实世界中这些文档类型的用法. 为什么使用文档类型(Why a DOCTYPE?) 依据HTML和XHTML标准,一个DOCTYPE("doc