• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:24来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT ANY>
<!ENTITY LOGO SYSTEM "http://metalab.unc.edu/xml/logo.gif"
NDATA GIF>
<!NOTATION GIF SYSTEM "image/gif"
<!ELEMENT IMAGE EMPTY>
XML 实用大全
第 327 页
<!ATTLIST IMAGE SOURNE ENTITY #REQUIRED>
]>
<DOCUMENT>
<IMAGE SOURNE="LOGO"/>
</DOCUMENT>
等到应用程序读取XML 文档时,就可认出这个不可析实体且显示出来。应用程序也可能不显示不可析实体(当用户使图像载
入失效时,Web 浏览器将选择不显示图像)。
这些例子表明:空元素就像是为不可析实体准备的容器,可是这不是必须采用的方法。例如,假设有一个基于XML 的公司
ID 系统,就是保安人员使用的查寻进入建筑物的人的系统;PERSON 元素拥有NAME、PHONE、OFFICE、EMPLOYEE_ID 子类和
PHOTO ENTITY 属性,如清单11-4 所示。
清单11-4:具有PHOTO ENTITY 属性的非空PERSON 元素
<?xml version="1.0" standalone="no"?>
<!DOCTYPE PERSON [
<!ELEMENT PERSON (NAME, EMPLOYEE_ID, PHONE, OFFICE)>
<!ELEMENT NAME (#PCDATA)>
<!ELEMENT EMPLOYEE_ID (#PCDATA)>
<!ELEMENT PHONE (#PCDATA)>
<!ELEMENT OFFICE (#PCDATA)>
<!NOTATION JPEG SYSTEM "image/jpg"
<!ENTITY ROGER SYSTEM "rogers.jpg" NDATA JPEG>
<!ATTLIST PERSON PHOTO ENTITY #REQUIRED>
]>
<PERSON PHOTO="ROGER">
<NAME>Jim Rogers</ NAME>
<EMPLOYEE_ID>4534</EMPLOYEE_ID>
<PHONE>X396</PHONE>
XML 实用大全
第 328 页
<OFFICE>RH 415A</OFFICE>
</PERSON>
这个例子看起来有点做作。实际上,使一个带有SOURCE 属性的空DHOTO 元素的成为PERSON 元素的子元素,而不是PERSON
元素的属性。再者,或许可以把这个DTD 分割为内部和外部的子集。如清单11-5 所示,外部子集声明元素、记号和属性。
这些都是可以被不同的文档共享的部分。但是,实体从一个文档到另一个文档会发生改变,因此最好把实体放在如清单11-6
显示的文档的内部DTD 子集中。
清单11-5:外部DTD 子集person.dtd
<!ELEMENT PERSON ( NAME, EMPLOYEE_ID, PHONE, OFFICE, PHOTO)>
<!ELEMENT NAME (#PCDATA)>
<!ELEMENT EMPLOYEE_ID (#PCDATA)>
<!ELEMENT PHONE (#PCDATA)>
<!ELEMENT OFFICE (#PCDATA)>
<!ELEMENT PHOTO EMPTY>
<!NOTATION JPEG SYSTEM "image/jpeg">
<!ATTLIST PHOTO SOURCE ENTITY #REQUIRED>
清单11-6:内含非空PERSON 元素和一个内部DTD 子集的文档
<?xml version="1.0" standalone="no"?>
<!DOCTYPE PERSON [
<!ENTITY % PERSON _DTD SYSTEM "person.dtd">
%PERSON_DTD;
<!ENTITY ROGER SYSTEM "rogers.jpg" NDATA JPEG>
]>
<PERSON>
<NAME>Jim Rogers</NAME>
<EMPLOYEE_ID>4534</EMPLOYEE_ID>
<PHONE>X396</PHONE>
XML 实用大全
第 329 页
<OFFICE>RH 415A</OFFICE>
<PHOTO SOURCE="ROGER"/>
</PERSON>
11.2.3 嵌入多个不可析实体
在某些特殊场合下,一个单一的属性甚至一个标识号,可能需要引用不止一个的不可析实体。就可以声明占位符元素的属性
为ENTITIES 类型。ENTITIES 属性值由空格分隔的多个不可析实体名组成,每个实体名都指向一个外部非XML 格式数据资源,
并且必须在DTD 中声明所有实体。例如,可以用这种方法编写一个以幻灯放映元素来切换不同的图片,DTD 需要如下形式的
声明:
<!ELEMENT SLIDESHOW EMPTY>
<!ATTLIST SLIDESHOW SOURCES ENTITIES #REQUIRED>
<!NOTATION JPEG SYSTEM "image/jpeg"
<!ENTITY HARM SYSTEM "charm.jpg" NDATA JPEG>
<!ENTITY MARJORIE SYSTEM "marjorie.jpg" NDATA JPEG>
<!ENTITY POSSUM SYSTEM "possum.jpg" NDATA JPEG>
<!ENTITY BLUE SYSTEM "blue.jpg" NDATA JPEG>
然后,在文档中需要幻灯放映出现的位置上,就可插入如下标记:
<SLIDESHOW SOUR ES="CHARM MARJORIE POSSUM BLUE">
必须再次强调,这不是一个XML 处理器(甚至任意处理器)可自动理解的具有魔力的方案,这仅仅是一种技巧,在嵌入文档
中的非XML 数据时,浏览器和其余应用程序可能采用也可能不采用的技术。
XML 实用大全
第 330 页
11.3 处理指令
指令经常过多地应用于支持HTML 的私有范围,如服务端嵌入、浏览器定制脚本语言、数据库模板和其余许多超出HTML 标准
范围的项目。出于这些目的而使用注释的好处是:其余系统可以简单地忽略它们无法理解的外来数据。这种方法的不利之处
在于:剥离了注释的文档可能不再是原来的文档了,并且仅仅作为文档的注释会被误解为这些私有范围的输入数据。为了避
免滥用注释,XML 提供了处理指令的方法,作为在文件中嵌入信息的明确机制,用于私有的应用程序而不是XML 语法分析器
或浏览器。其余用途包括,处理指令可以提供关于如何查看不可析外部实体的附加信息。
处理指令就是位于<? 和?>标记之间的一行文本。处理指令中的文本只需要如下句法结构,以XML 名开头,其后紧跟空格,
空格后为数据。XML 名可以是应用程序的实际名字(如latex),或者是在DTD 中指向应用程序的记号名(例如LATEX),
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML实用大全(95)