XML——XML文件约束之DTD详解

前端开发 作者: 2024-08-25 19:30:02
1.XML文件约束与DTD的简单介绍我们编写文档来约束一个XML文档的书写规范,这称之为XML约束。常用的约束技术有: XML DTD XML Schema DTD的基本概念: document type definition 文档类型定义DTD文件一般和XML文件配合使用,主要是为了约

1.XML文件束缚与DTD的简单介绍

<?xml version="1.0" encoding="gb2312"?> <class> <stu id="001"> <name>杨过</name> <sex></sex> <age>20</age> <面积>100</面积> </stu> </class>
<!ELEMENT 元素名 类型>
<!ELEMENT 班级 (学生+)> <!ELEMENT 学生 (名字,年龄,介绍)> <!ELEMENT 名字 (#PCDATA)> <!ELEMENT 年龄 (#PCDATA)> <!ELEMENT 介绍 (#PCDATA)>
<?xml version="1.0" encoding="utf⑻"?> <!--引入dtd文件,束缚这个xml--> <!DOCTYPE 班级 SYSTEM "myClass.dtd"> <班级> <学生> <名字>周小星</名字> <年龄>23</年龄> <介绍>学习刻苦</介绍> </学生> <学生> <名字>林晓</名字> <年龄>25</年龄> <介绍>是1个好学生</介绍> </学生> </班级>
<?xml version="1.0" encoding="utf⑻"?> <!--引入dtd文件,束缚这个xml--> <!DOCTYPE 班级 SYSTEM "myClass.dtd"> <班级> <学生> <名字>周小星</名字> <年龄>23</年龄> <介绍>学习刻苦</介绍> <面积>100平米</面积> </学生> <学生> <名字>林晓</名字> <年龄>25</年龄> <介绍>是1个好学生</介绍> </学生> </班级>
<html> <head> <!--自己编写1个简单的解析工具,去解析XML DTD是不是配套--> <script language="javascript"> // 创建xml文档解析器对象 var xmldoc = new ActiveXObject("Microsoft.XMLDOM"); // 开启xml校验 xmldoc.validateOnParse = "true"; // 装载xml文档,即指定校验哪一个XML文件 xmldoc.load("myClass.xml"); document.writeln("毛病信息:"+xmldoc.parseError.reason+"<br>"); document.writeln("毛病行号:"+xmldoc.parseError.line); </script> </head> <body> </body> </html>

2.DTD细节

<!DOCTYPE 根元素 [定义内容]>
<!DOCTYPE 根元素 SYSTEM "DTD文件路径">
<!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文件的URL">
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<!ELEMENT NAME CONTENT>
<!ELEMENT 家庭(人+,家电*)>
<家庭> < 名字="张晓明" 性别="男" 年龄="25"/> < 名字="李小钢" 性别="男" 年龄="36" 爱好="作个教育家和巨人"/> <家电 名称="彩电" 数量="3"/> </家庭>
符号 用处 示例 示例说明
() 用来给元素分组 (古龙|金庸),(王朔|余杰) 分成两组
| 在列出的对象当选择1个 (男人|女人) 表示男人或女人必须出现,二者最少选其1
+ 该对象必须出现1次或屡次 (成员+) 表示成员必须出现,而却可以出现多个成员
* 该对象允许出现0次或屡次 (爱好*) 爱好可以出现两次到屡次
? 该对象必须出现0次或1次 (菜鸟?) 菜鸟可以出现,也能够不出现,如果出现的话,最多只能出现1次
, 对象必须按指定的顺序出现 (西瓜,苹果,香蕉) 表示西瓜、苹果、香蕉必须出现,并且按这个顺序出现
<!ATTLIST 元素名称 属性名称 类型 属性特点 属性名称 类型 属性特点...... >
<?xml version="1.0" encoding="utf⑻"?> <!DOCTYPE 班级 SYSTEM "myClass.dtd"> <班级> <学生 地址="香港"> <名字>周小星</名字> <年龄>23</年龄> <介绍>学习刻苦</介绍> </学生> <学生 地址="澳门"> <名字>林晓</名字> <年龄>25</年龄> <介绍>是1个好学生</介绍> </学生> </班级>
<!ELEMENT 班级 (学生+)> <!ELEMENT 学生 (名字,介绍)> <!ATTLIST 学生 地址 CDATA #REQUIRED > <!ELEMENT 名字 (#PCDATA)> <!ELEMENT 年龄 (#PCDATA)> <!ELEMENT 介绍 (#PCDATA)>

2.4.1 对属性类型的详细解释

<!ATTLIST 木偶 姓名 CDATA #REQUIRED >
<木偶 姓名="匹诺曹"/> <木偶 姓名="PiNuocao"/> <木偶 姓名="123"/>
<!ELEMENT 公司职员 ANY> <!ATTLIST 公司职员 编号 ID #REQUIRED 姓名 CDATA #REQUIRED >
<公司职员 编号="Z001" 姓名="张3"/> <公司职员 编号="Z002" 姓名="李思"/>
<!ELEMENT 家庭(人+)> <!ELEMENTEMPTY> <!ATTLISTrelID ID #REQUIRED paraentID IDREFS #IMPLIED name CDATA #REQUIRED >
<家庭> < relID="P_1" name="爸爸"/> < relID="P_2" name="妈妈"/> < relID="P_3" parentID="P_1 P_2" name="儿子"/> </家庭>
<!ATTLIST person 婚姻状态 (single|married|divorced|widowed) #IMPLIED > <!ATTLIST person 性别 (男|女) #REQUIRED >
<!ENTITY 实体名称 "实体内容">
<!ENTITY copyright "I am a programmer"> .... &copyright;
<!ENTITY % 实体名称 "实体内容">
<!ENTITY % TAG_NAME "姓名|EMAIL|电话|地址"> <!ELEMENT 个人信息 (%TAG_NAME;|生日)> <!ELEMENT 客户信息 (%TAG_NAME;|公司名)>

3.DTD实际案例

<!ENTITY AUTHOR "John Doe"> <!ENTITY COMPANY "JD Power Tools,Inc."> <!ENTITY EMAIL "jd@jd-tools.com"> <!ELEMENT CATALOG (PRODUCT+)> <!ELEMENT PRODUCT (SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)> <!ATTLIST PRODUCT NAME CDATA #IMPLIED CATEGORY (HandTool|Table|Shop-Professional) "HandTool" PARTNUM CDATA #IMPLIED PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago" INVENTORY (InStock|Backordered|Discontinued) "InStock"> <!ELEMENT SPECIFICATIONS (#PCDATA)> <!ATTLIST SPECIFICATIONS WEIGHT CDATA #IMPLIED POWER CDATA #IMPLIED> <!ELEMENT OPTIONS (#PCDATA)> <!ATTLIST OPTIONS FINISH (Metal|Polished|Matte) "Matte" ADAPTER (Included|Optional|NotApplicable) "Included" CASE (HardShell|Soft|NotApplicable) "HardShell"> <!ELEMENT PRICE (#PCDATA)> <!ATTLIST PRICE MSRP CDATA #IMPLIED WHOLESALE CDATA #IMPLIED STREET CDATA #IMPLIED SHIPPING CDATA #IMPLIED> <!ELEMENT NOTES (#PCDATA)>
<?xml version="1.0" encoding="utf⑻"?> <!DOCTYPE CATALOG SYSTEM "product.dtd"> <CATALOG> <PRODUCT NAME="康帅傅矿泉水" CATEGORY="Table" PARTNUM="12" PLANT="Chicago"> <SPECIFICATIONS WEIGHT="20" POWER="18">这里是细节</SPECIFICATIONS> <PRICE>25</PRICE> <PRICE>28</PRICE> </PRODUCT> </CATALOG>
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_68561.html