方寸心间

一路走,十年不回头

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 DTD的目标,是定义一个XML文档的合法的构建块,它用一系列的合法的元素定义了文档的结构。

  1、简介
  DTD可以内嵌于XML文档,也可以单独成为一个文件。内嵌的语法是

<!DOCTYPE root-element [element-declarations]>

其中元素的定义语法是:
<!ELEMENT element-name category>
<!ELEMENT element-name (element-content)>

  XML文档对单独的DTD文件的引用方法:
<!DOCTYPE root-element SYSTEM "filename">
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属性定义
  

<!ATTLIST element-name attr-name attr-type default-value>
其中,attr-type有以下几种类型:











属性类型 解释
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 "value">
<!ENTITY entity-name SYSTEM "URI/URL">
,例如:
DTD:
<!ENTITY writer "Doglus More">
XML:
<author>&writer;</auther>

  6、在IE中用javascript调用XMLDOM进行XML文件的合法性检查

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
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)

其中,load()用来处理文件,处理字符串要用loadXML()。 
posted on 2007-03-28 10:07  方寸心间  阅读(251)  评论(0编辑  收藏  举报