领先的免费Web技术教程,涵盖HTML到ASP.NET

网站首页 > 知识剖析 正文

XML 文件类型定义(DTD) xml文件详解及原理

nixiaole 2024-11-08 17:11:25 知识剖析 23 ℃

DTD(文档类型定义)的作用是定义XML文档的合法构建模块。

DTD主要用处是约束XML文件, 也可去约束HTML XHTML...

DTD不要有太深的了解, 要求大家可以看懂, 可以根据别人提供的dtd文件, 写出对于的XML文件即可;

内部的DOCTYPE声明

假如DTD被包含在您的XML源文件中, 它应当通过下面的语法包装在一个DOCTYPE声明中:

<!DOCTYPE 根元素 [元素声明]>

带有 DTD 的 XML 文档实例:(选择"查看源代码"命令。)

<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

以上DTD解释如下:

!DOCTYPE note(第二行)定义此文档是note类型的文档。

!ELEMENT note(第三行)定义note元素有四个元素:"to、from、heading,、body"

!ELEMENT to(第四行)定义to元素为"#PCDATA"类型

!ELEMENT from(第五行)定义frome元素为"#PCDATA"类型

!ELEMENT heading(第六行)定义heading元素为"#PCDATA"类型

!ELEMENT body(第七行)定义body元素为"#PCDATA"类型

外部文档声明

假如DTD位于XML源文件的外部, 那么它应通过下面的语法被封装在一个DOCTYPE定义中:

<!DOCTYPE 根元素 SYSTEM "文件名">这个XML文档和上面的XML文档相同, 但是拥有一个外部的DTD:(选择"查看源代码"命令。)

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

这是包含DTD的"note.dtd"文件:

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

通过XML解析器进行验证

当您试图打开某个XML文档时, XML解析器有可能会产生错误。通过访问parseError对象, 就可以取回引起错误的确切代码、文本甚至所在的行。

注释:load( )方法用于文件, 而loadXML( )方法用于字符串。

//创建一个xml解析器
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); //只能用于IE浏览器
//是否异步加载xml文件, 最新版的IE9浏览器必须添加此语句, 并且属性值设为false(同步), 否则浏览器不能正确解析验证
xmlDoc.async="false"; //双引号可要可不要
//开启校验功能
xmlDoc.validateOnParse="true"; //双引号可要可不要
//装载xml文档
xmlDoc.load("wangye.xml");
//如果有错误信息,则输出
document.write("<br>Error Code: ");
document.write(xmlDoc.parseError.errorCode);
document.write("<br>Error Reason: ");
document.write(xmlDoc.parseError.reason); //reason: 理由, 原因
document.write("<br>Error Line: ");
document.write(xmlDoc.parseError.line);

内外部DTD文档结合

<!DOCTYPE 根元素 SYSTEM "DTD文件路径"[定义内容]>

XML文件使用DOCTYPE声明语句来指明它所遵循的DTD文件, DOCTYPE声明语句有两种形式:

当引用的文件在本地时, 采用如下方式:

<!DOCTYPE 文档根结点 SYSTEM "DTD文件的URL">

当引用的文件时一个公共的文件时, 采用如下形式:

<!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Tags:

最近发表
标签列表