xml文档中可以写什么元素,元素中又可以增加什么属性,这些限定都需要限定文件来给予约束。
所以有必要了解约束文档的写法。
约束文档有两种:DTD、Schema。
此处讲解DTD的基础知识。
DTD的相关知识:
1.dtd既可以单独用一个文件写,也可以直接写在xml文档中
(新增:编程校验XML文档正确性
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body>行号:<div id="l"></div><br>原因:<div id="r"></div></body></html><script> var xmldoc = new ActiveXObject("Microsoft.XMLDOM");//创建浏览器内置的xml解析器 xmldoc.validateOnParse = true;//打开xml解析器的dtd校验 xmldoc.load("book.xml"); var line = xmldoc.parseError.line; var reason = xmldoc.parseError.reason; document.getElementById("l").innerHTML = line; document.getElementById("r").innerHTML = reason;
</script>
)
2.引用DTD约束 (1)当引用的文件在本地时,采用如下方法: <!DOCTYPE 文档根节点 SYSTEM "DTD文件的URL"> 例如:<!DOCTYPE 书架 SYSTEM "book.dtd"> (2)当引用的文件是一个公共文件时,采用如下方法: <!DOCTYPE 文档根节点 PUBLIC "DTD文件的URL"> 3.DTD元素定义 <!ELEMENT 元素名称 元素类型> (1) 元素类型:EMPTY(定义空元素,如<br/>),ANY (2) 元素类型处也可以是元素内容。 如:<!ELEMENT 书架(书名,作者,售价)>:使用“,”表示内容的出现顺序必须与声明一致 <!ELEMENT 书架(书名|作者|售价)>:使用“|”表示任选其一,即多个只能出现一个 <!ELEMENT 书名(#PCDATA)>:标签内可以放字符串 (3) 元素内容可以出现正则符号 如:+:一次或多次 ?:0次或一次 *:0次或多次 4.DTD属性定义 <!ATTLIST 元素名 属性名1 属性值类型 设置说明 属性名2 属性值类型 设置说明 > 如:<!ATTLIST 商品 类别 CDATA #REQUIRED 颜色 CDATA #IMPLIED > 对应的XML文件: <商品 类别=“服饰” 颜色=“黄色”>......</商品> <商品 类别=“服饰” >......</商品> (1)设置说明 #REQUIRED :必须设置该属性 #IMPLIED :可以设置也可以不设置 #FIXED :设置固定值 没有关键字:设置默认值 (2-1)属性值类型 CDATA :普通字符串 ENUMERATED:枚举 ID :ID ENTITY :实体 (2-2)实体:引用实体,参数实体 引用实体:<!ENTITY 实体名称 “实体内容”> 引用方法:&实体名称 如:<!ENTITY copyright "i am a programer"> ©right; 参数实体:<!ENTITY % 实体名称 “实体内容”> 引用方法:%实体名称 如:<!ENTITY % TAG_NAMES "姓名|EMAIL|电话"> <!ELEMENT 个人信息 (%TAG_NAMES;|地址)