文档类型定义和命名空间

  有效(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

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

  1. XML之DTD(文档类型定义)

    文档类型定义(DTD)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构. DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. 声明元素 在 DTD 中,XML 元素 ...

  2. 2018.5.14 XML文档类型定义----DTD

    1.DTD概述 一个完全意义上的XML文件不仅仅是Well-fromed(格式良好的),而且还应该是使用了一些自定义的标记ValidatingXMl(有效的)文档也就是说他必须遵守文档类型的定义中已声 ...

  3. DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义

    DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义 今天看到一篇CSS应用的一个友好搜索,我按网页上的代码复制.粘贴后预览时总达不到效果,而直接拷贝他的实例却能达到效果, ...

  4. Umbraco文档类型定义多个template

    利用这个可以同时写PC端和手机端的网站, 在Template中,建立手机端的模板: 在文档类型中,同时选择两个模板,在浏览的时候在URL后加上Template的名称 + .aspx 就可以浏览到你写的 ...

  5. bean文档类型定义

    ELEMENT:表示当前 (bean*):表示0到多个bean元素 (property*):表示0到多个property元素 ATTLIST:表示属性 #REQUIRED:表示不可缺少 #IMPLIE ...

  6. Doctype 文档类型,标准模式,混杂模式

    HTML4.01和XHTML1.0 基于 SGML,支持DTD声明,HTML5不是,但是需要 doctype 来规范浏览器的行为. 标准模式是指,DTD声明定义了标准文档的类型后,浏览器按W3C标准解 ...

  7. HTML文档类型DTD与浏览器怪异模式

    虽然在兼容IE6时候经常会注意到两个模式的区别,但是系统的理解起来,还没有认真总结过.看了一些网上的资料.结合自己的理解汇总了一下,放在这里备忘并分享给大家. 浏览器从服务端获取网页后会根据文档的DO ...

  8. 文档类型DTD,DOCTYPE和浏览器模式

    出处:http://blog.csdn.net/freshlover/article/details/11616563 浏览器从服务端获取网页后会根据文档的DOCTYPE定义显示网页,如果文档正确定义 ...

  9. xml基础之二(XML结构【2】)DTD文档模版

    xml基础之二(XML结构[2])DTD文档模版 xml 模板 文档结构  我们知道XML主要用于数据的存储和传输,所以无论是自定义还是外部引用DTD模板文档,都是为了突出数据的存储规范.DTD(文档 ...

随机推荐

  1. 《Linux Device Drivers》 第十七章 网络驱动程序——note

    基本介绍 第三类是标准的网络接口Linux设备,本章介绍的内核,其余的交互网络接口描述 网络接口,必须使用特定的内核数据结构本身注册,与外部分组交换数据线打电话时准备 经常使用的文件上的网络接口操作是 ...

  2. Linux下安装Oracle11g服务器(转)

    安装环境 Linux服务器:SuSe10 sp2 64位 Oracle服务器:Oracle11gR2 64位 系统要求 Linux安装Oracle系统要求 系统要求 说明 内存 必须高于1G的物理内存 ...

  3. 国外代理server

    这里有几个国外的代理server 另外在网上能够找到很多这种 不能用的时候就在网上搜搜 稳定代理server 有非常多的 IP port 显示地址 24.245.58.130:32167 美国 新泽西 ...

  4. 2014在百度之星资格赛的第二个问题Disk Schedule

    事实上,我认为它可以用来费用流问题.但光建地图上加班. ..不科学啊.. . 因副作用太大,否则,必然在.最后,想啊想,或者使用dp对.... 别想了一维dp... .我不知道我是怎么想.无论如何,这 ...

  5. 采用objdump调试驱动程序

    最近的一个推断调整nand是好是坏司机+测试程序,因此,与下面的调整过程.看来他也学到了一点知识.因此,关于备案. 这篇文章主要是讲述调式驱动的一个方法而已. 先来看看測试程序 #include &l ...

  6. main thread starting…

    例的结果,下面的: main thread starting- Thrad 2 staring- Thrad 2 end- Thrad 4 staring- Thrad 4 end- Thrad 1 ...

  7. 他们主动布局(autolayout)环境的图像编辑器

    hi,all: 在经过了一番犹豫之后.我决定将我自己做的这个小APP的源代码发布给大家: 其出发点是和大家一起学习iOS开发.仅供学习參考之用. 之前代码是托管与gitlab 上的,今天我将其pull ...

  8. 排序算法门外汉理解-Shell排序

    #include <stdio.h> /* 希尔排序 基本思想:希尔排序又称为缩小增量排序,对简单插入排序的优化. (外部分组gap,组内部插入排序! ! ) 特点:一种不稳定的排序 */ ...

  9. 全栈JavaScript之路(十七)HTML5 新增字符集属性

    HTML5 添加�了几个文档字符集属性. document.charset : 表示文档的实际使用的字符集. document.defaultCharset: 表示默认的字符集,跟浏览器以及操作系统设 ...

  10. Integer比较

    /** * @time 2014-06-25 * @author Cao HaiCheng * */ public class demo { public static void main(Strin ...