首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

DTD 课程

2012-08-28 
DTD 教程DTD 教程--------------文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来

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

1
在XML内部定义文档结构

<?xml version="1.0"?><!DOCTYPE note [  <!ELEMENT note (to,from,heading,body)>  <!ELEMENT to      (#PCDATA)>  <!ELEMENT from    (#PCDATA)>  <!ELEMENT heading (#PCDATA)>  <!ELEMENT body    (#PCDATA)>]><note>  <to>George</to>  <from>John</from>  <heading>Reminder</heading>  <body>Don't forget the meeting!</body></note>



2
在XML中引用一个外部的DTD文件
<!DOCTYPE 根元素 SYSTEM "文件名">

note.dtd
<?xml version="1.0"?><!DOCTYPE note [  <!ELEMENT note (to,from,heading,body)>  <!ELEMENT to      (#PCDATA)>  <!ELEMENT from    (#PCDATA)>  <!ELEMENT heading (#PCDATA)>  <!ELEMENT body    (#PCDATA)>]>


refdtd.xml
<!DOCTYPE note SYSTEM "note.dtd"><note><to>George</to><from>John</from><heading>Reminder</heading><body>Don't forget the meeting!</body></note> 


3
DTD 的构建模块:
元素
属性
实体: 即变量, 可通过解析实体引用(&entity)获取实体值. 如实体引用&nbsp; 会被解析成空格.实体有作用域.
PCDATA : 被解析器解析的文本, 会解析文本变量为文本.
CDATA : 不解析实体引用,不解析实体

4
常见实体引用:
&lt;<
&gt;>
&amp;&
&quot;"
&apos;'

5
元素声明
<!ELEMENT 元素名称 类别>

<!ELEMENT 元素名称 (元素内容)>

<!ELEMENT br EMPTY>

<!ELEMENT 元素名称 (#PCDATA)>
(#PCDATA): 表示元素内容为解析字符串.

<!ELEMENT sqlMapConfig (properties?, settings?, typeAlias*, typeHandler*, transactionManager?, sqlMap+)+>
表示元素内容为子元素序列.


5
声明只出现一次的子元素
<!ELEMENT 元素名称 (子元素名称)>

声明最少出现一次的子元素
<!ELEMENT 元素名称 (子元素名称+)>

声明出现零次或多次的子元素
<!ELEMENT 元素名称 (子元素名称*)>

声明出现零次或一次的子元素
<!ELEMENT 元素名称 (子元素名称?)>

声明“必选其中之一”类型的子元素
<!ELEMENT note (message|body)>

声明混合型的内容
<!ELEMENT note (#PCDATA|to|from|header|message)*>
表示:
"note" 元素可包含出现零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。

EMPTY: 表示元素没有内容ANY:表示元素任何内容* 0次或多次+ 1次或多次? 0次或1次| 选择其中之一



6
声明属性
<!ATTLIST 元素名称 属性名称 属性类型 默认值>

7
属性类型
CDATA值为字符数据 (character data)(en1|en2|..)此值是枚举列表中的一个值ID值为唯一的 idIDREF值为另外一个元素的 idIDREFS值为其他 id 的列表NMTOKEN值为合法的 XML 名称NMTOKENS值为合法的 XML 名称的列表ENTITY值是一个实体ENTITIES值是一个实体列表NOTATION此值是符号的名称xml:值是一个预定义的 XML 值


8
属性默认值

值属性的默认值#REQUIRED属性值是必需的#IMPLIED属性不是必需的#FIXED value属性值是固定的


8
实体

一个内部实体声明语法:<!ENTITY 实体名称 "实体的值">例子:DTD 例子:<!ENTITY writer "Bill Gates"><!ENTITY copyright "Copyright W3School.com.cn">XML 例子:<author>&writer;&copyright;</author>注释: 一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号 (;)。一个外部实体声明语法:<!ENTITY 实体名称 SYSTEM "URI/URL">例子:DTD 例子:<!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd"><!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">XML 例子:<author>&writer;&copyright;</author>


9
通过JS验证DTD

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")xmlDoc.async="false"xmlDoc.validateOnParse="false"xmlDoc.load("note_dtd_error.xml")document.write("<br>Error Code: ")document.write(xmlDoc.parseError.errorCode)document.write("<br>Error Reason: ")document.write(xmlDoc.parseError.reason)document.write("<br>Error Line: ")document.write(xmlDoc.parseError.line)







热点排行