Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3332225
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类: 系统运维

2009-08-09 17:46:52

XML DTD

DTD的语法规定,DTD的所有关键字都是大写的,如DOCTYPE,ELEMENT等,它分为两种。

1、内部DTD。注意的是在元素名后面一定要有空格,否则就不是格式良好的
  
]>

如对下面这个xml文档的类型定义:

 
 
 
 

]>

 静夜思
 李白
 床前明月光,
 疑事地上霜.
 举头望明月,
 低头思故乡.

2、外部DTD
如果吧DTD放在xml文档内部,一方面会带来xml文档变大,一些程序可能不需要DTD信息;另一方面不利于DTD共用,也许会有不同的xml文档共用这个DTD。这就是外部DTD存在的原因。

定义外部DTD的语法:
(SYSTEM表示DTD文件是私有的。引号不能少)





 静夜思
 李白
 床前明月光,
 疑事地上霜.
 举头望明月,
 低头思故乡.
 李白是中国最伟大的诗人!

-----------------------------相同目录下的poem.dtd内容如下:






如果想引用一个公共的DTD文档,又该如何呢?
(PUBLIC表示DTD文件是公共的,注意在PUBLIC之后,还多了一个DTD的名称。引号不能少)
下面是taglib的DTD:

"-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
    "
">
分析一下这个外部DTD声明:
1、关键字DOCTYPE,PUBLIC。
2、根元素名:taglib。所以每一个标签库定义文件都是以taglib为根元素的,否则就不会验证通过。
3、紫色的字
"-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN",这是公共DTD的名称。这个东西命名是有些讲究的。首先它是以"-"开头的,表示这个DTD不是一个标准组织制定的。(如果是ISO标 准化组织批准的,以“ISO”开头,如果不是ISO的标准化组织批准的,以“+”开头。)。接着就是双斜杠“//”,跟着的是DTD所有者的名字,很明显 这个DTD是sun公司定的。接着又是双斜杠“//”,然后跟着的是DTD描述的文档类型,可以看出这份DTD描述的是jsp 标签库1.2版本的格式。再跟着的就是“//”和ISO 639语言标识符。
4、绿色的字"
",表示这个DTD的位置。
疑问:是不是xml分析器都会到java.sun.com上去找这个dtd呢?答案是否定的,xml分析器首先会以某种机制查找公共DTD的名称,查到了,则以此为标准,如果查不到,再到DTD位置上去找。

最后定义一个自己的DTD:
>

   以上摘自《XML学习-DTD
阅读(1270) | 评论(0) | 转发(0) |
0

上一篇:XML实体

下一篇:XML元素类型

给主人留下些什么吧!~~