XML: DTD详解(二)
来源:互联网 发布:语言互译软件 编辑:程序博客网 时间:2024/06/05 20:21
文档类型定义和命名空间
有效(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>
- XML: DTD详解(二)
- XML学习笔记(二):XML规范:DTD详解
- XML学习(二)DTD
- xml入门(二)----DTD
- xml dtd 详解(三)
- xml dtd详解(一)
- XML三部曲之拨云见日DTD(二)
- (二)XML之DTD文档
- 初识XML(二)DTD
- xml笔记(三)---DTD详解
- xml dtd详解
- xml DTD详解
- XML DTD详解
- XML DTD详解
- XML DTD详解
- XML DTD详解
- XML DTD详解
- XML DTD 语法详解
- 编写一个监控Zookeeper的Java程序,可以通过两种方式 :
- iOS Runtime详解之给Category添加成员变量(怎么设置关联对象)
- PHP-FIG
- updatepanel中使用alert弹出框方法(两种)
- 英文邮件礼仪:向教授请教学术问题
- XML: DTD详解(二)
- java 多线程(六) synchronized关键字详解
- 一到周末就惰性,这要改啊要改啊
- 典型关联分析(Canonical Correlation Analysis)
- hdu 5603 the soldier of love
- Hadoop-Hive快速入门
- scanf与scanf_s比较
- gsoap使用总结
- webservice cxf -- wsdl