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;|地址)