您当前的位置: 首页 > 学无止境 > XML与XSLT 网站首页XML与XSLT
dtd实战-一个电视节目表的xml编写
发布时间:2015-04-02 22:37:08编辑:雪饮阅读()
下面是一张电视节目表的约束规范,很容易看出该文档是一个内部的dtd。
<!DOCTYPE TVSCHEDULE [
<!ELEMENT TVSCHEDULE (CHANNEL+)> <!ELEMENT CHANNEL (BANNER,DAY+)> <!ELEMENT BANNER (#PCDATA)> <!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)> <!ELEMENT HOLIDAY (#PCDATA)> <!ELEMENT DATE (#PCDATA)> <!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)> <!ELEMENT TIME (#PCDATA)> <!ELEMENT TITLE (#PCDATA)> <!ELEMENT DESCRIPTION (#PCDATA)> <!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED> <!ATTLIST CHANNEL CHAN CDATA #REQUIRED> <!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED> <!ATTLIST TITLE RATING CDATA #IMPLIED> <!ATTLIST TITLE LANGUAGE CDATA #IMPLIED> ]>
那么现在我们根据只选择该内部的dtd单独做一个dtd约束文件,通过xml外部引入的方式对xml进行规范,并在此规范之下完成一份xml的编写,我们取出上面的内部dtd另存一份dtd约束“yuesu2.dtd”源代码如下:
<!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT DESCRIPTION (#PCDATA)>
<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>
然后我们通过xml来外部引入该dtd来约束并编写xml文档:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE TVSCHEDULE SYSTEM "yuesu2.dtd" >
<TVSCHEDULE NAME="电商">
<CHANNEL CHAN="频道">
<BANNER>banner</BANNER>
<DAY>
<DATE>日期</DATE>
<HOLIDAY>xialiang</HOLIDAY>
</DAY>
</CHANNEL>
</TVSCHEDULE>
只是为了符合这个dtd的约束规范,所以我的xml中pcdata的内容可以忽视,然后我们使用javascript来创建xml解析器对象,并开启对xml的验证:
<html>
<head>
<title>测试dtd</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<script language="javascript">
var xmldoc=new ActiveXObject("Microsoft.XMLDOM");
xmldoc.validateOnParse = true;
xmldoc.load("class5.xml");
document.write("错误信息="+xmldoc.parseError.reason+"<br/>");
document.write("错误的行号="+xmldoc.parseError.line);
</script>
</head>
</html>
这里仅仅创建的xmlDOM对象仅仅只是在ie中的,所以我们以ie为标准来测试:
不错,完全ok,没有错误行。
关键字词:dtd实战,个人博客
上一篇:dtd文档详解-属性篇