外部dtd,内部dtd,公有dtd

1、内部DTD。注意的是在元素名后面一定要有空格,否则就不是格式良好的,内部dtd放在格式数据的xml里面。
<!DOCTYPE
根元素名 [
   <!ELEMENT
元素名 (元素类型定义)>
]>

如对下面这个xml文档的类型定义:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE poem [
  <!ELEMENT poem (title,author,line+)>
  <!ELEMENT title (#PCDATA)>
  <!ELEMENT author (#PCDATA)>
  <!ELEMENT line (#PCDATA)>
]>
<poem>
 <title>
静夜思</title>
 <author>
李白</author>
 <line>
床前明月光,</line>
 <line>
疑事地上霜.</line>
 <line>
举头望明月,</line>
 <line>
低头思故乡.</line>
</poem>

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

定义外部DTD的语法:
<!DOCTYPE  
根元素名 SYSTEM "外部DTD文件的URI">SYSTEM表示DTD文件是私有的。引号不能少)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet href="simple1.css" type="text/css" ?>
<!--
外部DTD -->
<!DOCTYPE poem SYSTEM "poem.dtd">

<poem>
 <title>
静夜思</title>
 <author>
李白</author>
 <line>
床前明月光,</line>
 <line>
疑事地上霜.</line>
 <line>
举头望明月,</line>
 <line>
低头思故乡.</line>
 <commet>
李白是中国最伟大的诗人!</commet>
</poem>
-----------------------------
相同目录下的poem.dtd内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT poem (title,author,line+,commet)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT line (#PCDATA)>
<!ELEMENT commet  (#PCDATA)>

如果想引用一个公共的DTD文档,又该如何呢?
<!DOCTYPE  
根元素名 PUBLIC "DTD的名称" "外部DTD文件的URI">PUBLIC表示DTD文件是公共的,注意在PUBLIC之后,还多了一个DTD的名称。引号不能少)
下面是taglibDTD
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
    "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
分析一下这个外部DTD声明:
1、关键字DOCTYPEPUBLIC
2
、根元素名:taglib。所以每一个标签库定义文件都是以taglib为根元素的,否则就不会验证通过。
3
、紫色的字"-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN",这是公共DTD的名称。这个东西命名是有些讲究的。首先它是以"-"开头的,表示这个DTD不是一个标准组织制定的。(如果是ISO标准化组织批准的,以“ISO”开头,如果不是ISO的标准化组织批准的,以“+”开头。)。接着就是双斜杠“//”,跟着的是DTD所有者的名字,很明显这个DTDsun公司定的。接着又是双斜杠“//”,然后跟着的是DTD描述的文档类型,可以看出这份DTD描述的是jsp 标签库1.2版本的格式。再跟着的就是“//”ISO 639语言标识符。
4、绿色的字"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd",表示这个DTD的位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值