DTD的目标,是定义一个XML文档的合法的构建块,它用一系列的合法的元素定义了文档的结构。
1、简介
DTD可以内嵌于XML文档,也可以单独成为一个文件。内嵌的语法是
其中元素的定义语法是:
<!ELEMENT element-name (element-content)>
XML文档对单独的DTD文件的引用方法:
2、构建块
从DTD的角度看去,XML是由下述构建块构成的:
(1)Elements,元素,是XML的主要构建块,
(2)Tags,标签,用来标记元素,
(3)Attributes,属性,关于元素的额外或补充信息,
(4)Entities,实体,也可以说是一种变量,用来存放或代表其它字符或字符串,XML预定义了<>&"'五种实体,
(5)PCDATA,可解析数据,指开始标签和结束标签之间的数据,其中的标签或特殊字符在解析时会被扩展;
(6)CDATA,不解析数据,也是合法的数据,只是不被解析器进一步解析而已。
3、Elements定义
category有EMPTY和ANY两种。
element-content有几种情况:
(1)#PCDATA,内容只含有字符;
(2)child-element[,child-element]
(3)child-name+,子元素只少出现一次
(4)child-name*,子元素只少出现0次
(5)child-name?,子元素出现0次或1次
(6)child1|child2,两者之一出现
4、Attributes属性定义
属性类型 | 解释 |
CDATA | 字符数据 |
(en1|en2|...) | 枚举,只能从其中取一值 |
ID | 唯一ID |
IDREF | 另一个元素的ID引用 |
IDREFS | 一些其它ID |
NMTOKEN | 一个合法的XML名字 |
NMTOKENS | 一些合法的XML名字 |
ENTITY | 一个实体 |
ENTITIES | 一些实体 |
NOTATION | 一个符号的名字 |
xml: | 预定XML值 |
属性类型 | 解释 |
value | 实际值 |
#REQUIRED | 元素必须包含此属性 |
#IMPLIED | 元素不必包含此属性 |
#FIXED value | 是固定的值value |
5、Entities,实体定义
有内部定义与外部定义两种形式:
<!ENTITY entity-name SYSTEM "URI/URL">
<!ENTITY writer "Doglus More">
XML:
<author>&writer;</auther>
6、在IE中用javascript调用XMLDOM进行XML文件的合法性检查
xmlDoc.async="false"
xmlDoc.validateOnParse="true"
xmlDoc.load("note_dtd_error.xml")
document.write("
Error Code: ")
document.write(xmlDoc.parseError.errorCode)
document.write("
Error Reason: ")
document.write(xmlDoc.parseError.reason)
document.write("
Error Line: ")
document.write(xmlDoc.parseError.line)