曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
所有的元素类型声明都以<!ELEMENT(区分大小写)开头而以>结束。其中包括声明的元素名称(本例中为SEASON)后接内
容规格。关键词ANY(也要区分大小写)表明所有可能的元素以及可析的字符数据都可以是SEASON 元素的子元素。
基本元素使用ANY 是通常的作法——尤其是对未结构化的文档——但对多数其他元素则应避免使用ANY。通常每项标记的内
容应尽可能准确。DTD 经常是在整个开发过程中逐步完善的,随着反映应用情况和首制作中未预料的情况,严格性将减少。
所以,最好是开始时严格,以后再放松些。
8.5.2 #PCDATA
尽管文档中可以出现任何元素,但出现的元素必须声明。第一个需要声明的元素是YEAR,下面是YEAR 元素的元素声明:
<!ELEMENT YEAR (#PCDATA)>
该声明说明YEAR 只能包含可析的字符数据,即非标记文本,但它不能包含自己的子元素。所以,下面这个YEAR 元素是合法
的:
<YEAR>1998</YEAR>
以下这些YEAR 元素都是合法的:
XML 实用大全
第 199 页
<YEAR>98</YEAR>
<YEAR>1998 C.E.</YEAR>
<YEAR>
The year of our lord one thousand,
nine hundred, & ninety-eight
</YEAR>
甚至下面这个YEAR 元素也是合法的,因为XML 不会去检查PCDATA 的内容,只要是不包括标记的文本就可以。
<YEAR>Delicious, delicious, oh how boring</YEAR>
但是,下面的YEAR 元素是非法的,因为它包含了子元素:
<YEAR>
<MONTH>January</MONTH>
<MONTH>February</MONTH>
<MONTH>March</MONTH>
<MONTH>April</MONTH>
<MONTH>May</MONTH>
<MONTH>June</MONTH>
<MONTH>July</MONTH>
<MONTH>August</MONTH>
<MONTH>September</MONTH>
<MONTH>October</MONTH>
<MONTH>November</MONTH>
<MONTH>December</MONTH>
</YEAR>
SEASON 和YEAR 元素声明应包括在文档类型声明中,如下所示:
XML 实用大全
第 200 页
<!DOCTYPE SEASON [
<!ELEMENT SEASON ANY>
<!ELEMENT YEAR (#PCDATA)>
]>
通常,空格和缩进无关紧要。元素声明的顺序也不重要。下面这一文档类型声明的作用与上面的声明相同:
<!DOCTYPE SEASON [
<!ELEMENT YEAR (#PCDATA)>
<!ELEMENT SEASON ANY>
]>
上面两个文档声明都是说一个SEASON 元素可以包含可析的字符数据和以任意顺序声明的任意数量的其他元素。本例中如此
声明的元素只有YEAR,它只能包含可析的字符数据。例如考虑清单8-5 中的文档。
清单8-5:一个合法的文档
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE SEASON [
<!ELEMENT YEAR (#PCDATA)>
<!ELEMENT SEASON ANY>
]>
<SEASON>
<YEAR>1998</YEAR>
</SEASON>
因为SEASON 元素也可以包含可析的字符数据,所以可以在YEAR 元素之外附加文本,如清单8-6 所示。
清单8-6:包含YEAR 元素和正常文本的合法的文档
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE SEASON [
<!ELEMENT YEAR (#PCDATA)>
XML 实用大全
第 201 页
<!ELEMENT SEASON ANY>
]>
<SEASON>
<YEAR>1998</YEAR>
Major League Baseball
</SEASON>
我们最后是不接受这样的文档的。但是此时它是合法的,因为SEASON 被声明为可以接受ANY 内容。大多数时候,在定义一
个元素的所有子元素之前以ANY 代替一个元素,就比较容易起步。然后再用实际的子元素来替换ANY。
您可以向清单8-6 上附加一份简单的样式单,如第4 章中创建的baseballstats.css,如清单8-7 所示。然后将其装入Web
浏览器,结果显示在图8-7 中。baseballstats.css 样式单包含一些没有出现在DTD 或是清单8-7 列出的文档部分中的元素
的样式规则,但这没有问题。Web 浏览器会忽略任何文档中没有的元素的样式规则。
清单8-7:包含样式单、一个YEAR 元素和正常文本的合法文档
<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/css" href="greeting.css"?>
<!DOCTYPE SEASON [
<!ELEMENT YEAR (#PCDATA)>
<!ELEMENT SEASON ANY>
]>
<SEASON>
<YEAR>1998</YEAR>
Major League Baseball
</SEASON>
XML 实用大全
第 202 页
图8-7 在Internet Explorer 5.0 中显示的包含样式单、YEAR 元素和正常文本的文档
8.5.3 子元素列表
由于SEASON 元素被声明为可以接受任何元素作为子元素,因而可以接受各种各样的元素。当遇到那些多多少少有些非结构
化的文本,如杂志文章时,这种情况就很有用。这时段落、副栏、项目列表、序号列表、图形、照片以及子标题可出现在文
档的任意位置。然而,有时可能想对数据的安排上多实行些规则和控制。例如,可能会要求每一个LEAGUE 元素有一个
LEAGUE_NAME 子元素,而每个PLAYER 元素要有一个GIVEN_NAME 和SURNAME 子元素,并且GIVEN_NAME 要放在SURNAME 之前。
为了声明LEAGUE 元素必须有一个名称,只要声明LEAGUE_NAME 元素,然后在LEAGUE 声明后的括号内加入LEAGUE_NAME,如
下面这样:
<!ELEMENT LEAGUE (LEAGUE_NAME)>
<!ELEMENT LEAGUE_NAME (#PCDATA)>
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML实用大全(62)