• 热门标签

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

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

日历)。
在DTD 中声明记号,并且用记号属性描述嵌入XML 文档中的非XML 数据的格式。接着再研究日期的例子,清单11-1 定义两
种日期记号:ISO 8601 和美国惯用格式。然后将NOTATION 类型必需的FORMAT 属性添加到每一个DATE 元素中,用来描述特
定元素的结构。
清单11-1:ISO 8601 和美国惯用格式DATE 元素
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE SCHEDULE [
<!NOTATION ISODATE SYSTEM
"http://www.iso.ch/cate/d15903.html">
<!NOTATION USDATE SYSTEM
"http://es.rice.edu/ES/humsoc/Galileo/Things/gregorian_calendar
.html">
<!ELEMENT SCHEDULE (APPOINTMENT*)>
<!ELEMENT APPOINTMENT (NOTE, DATE, TIME?)>
<!ELEMENT NOTE (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT TIME (#PCDATA)>
<!ATTLIST DATE FORMAT NOTATION (ISODATE | USDATE) #IMPLIED>
]>
<SCHEDULE>
<APPOINTMENT>
<NOTE>Deliver presents</NOTE>
<DATE FORMAT="ISDATE">12-25-1999</DATE>
</APPOINTMENT>
<APPOINTMENT>
XML 实用大全
第 324 页
<NOTE>Party like it s 1999</NOTE>
<DATE FORMAT="ISODATE">19991231</DATE>
</APPOINTMENT>
</SCHEDULE>
记号不能强制作者使用记号描述的格式。因此需要提供除XML 基本方法以外的几种语言方案——但是在相信作者能正确描述
日期的简单应用场合,记号方法是有效的。
XML 实用大全
第 325 页
11.2 不可析外部实体
对所有的数据,特别是非文本数据,XML 格式都不是理想的格式。例如,可以按下面所示的方式,把位图图像的每一个像素
存为一个XML 元素:
<PIXEL X="32"Y="28" COLOR="FF5E32"/>
可是,这肯定不是一个好主意。任何微小的错误都会导致气球图像文件的比例严重失衡。XML 现在和将来都永远不可能让XML
文档具有访问数据的能力,因此无法把所有数据按XML 编码。
一个典型的Web 页面可以引用GIF 和JPEG 图像、JAVA 小程序、ActiveX 控件、各种类型的声音等等。在XML 中,因为XML
处理器不会去尝试理解非XML 格式的数据块,所以把这些数据块称为不可析实体。至多XML 处理器通知应用程序存在这样的
实体,并且为应用程序提供实体名和实体可能包含的内容(可是这并不是必须执行的动作)。
HTML 页面通过各种定制的标记嵌入非HTML 实体。图片由具有SRC 属性的<IMG>标记引用,SRC 属性提供图像文件的URL;JAVA
程序由具有CLASS 和CODEBASE 属性的<APPLET>标记包括,CLASS 和CODEBASE 属性指向JAVA 程序保存的文件和目录;<OBJECT>
标记来嵌入CODEBASE 属性引用,可从中找到目标数据的URI。每一种情况下,特定的预定义标记表示一种特定的内容。预
定义属性包含其内容的URL。
XML 应用程序可以但不是必须这样运作,实际上,除了特意为保持与落后的HTML 之间的兼容性之外,大部分XML 应用程序
都不这样做。相反,XML 应用程序使用不可析外部实体引用这些内容。不可析外部实体提供与非XML 数据的实际位置的链接。
接着文档中特定的元素利用其ENTITY 属性与实体相连。
11.2.1 声明不可析实体
回忆第9 章的内容,外部实体的声明看起来如下面的形式:
<!ENTITY SIG SYSTEM "http://metalab.unc.edu/xml/signature.xml">
可是,仅在URL 指明的外部实体恰好为完整的XML 文档的时候,才能接受这种格式。如果外部实体不是XML,则不得不使用
NDATA 关键字指定实体类型。例如,为了用LOGO 名字连接GIF 格式文件logo.gif,就需在DTD 中放置如下的ENTITY 声明:
<!ENTITY LOGO SYSTEM "logo.gif" NDATA GIF>
声明中的最终名字必须是DTD 中声明的记号名,如本例中的GIF。记号将GIF 类的名称与某种类型的外部标识符联系起来,
外部标识符标识某种格式。如MIME 类型、ISO 标准式或者是格式规格的URL。例如,GIF 的记号类似下面的形式:
<!NOTATION GIF SYSTEM "image/gif">
通常,作为习惯的表示方法,可以使用绝对或相对的URL 指向外部实体。例如:
<!ENTITY LOGO SYSTEM "http://metalab.unc.edu/xml/logo.gif"
NDATA GIF>
<!ENTITY LOGO SYSTEM "/xml/logo.gif" NDATA GIF>
XML 实用大全
第 326 页
<!ENTITY LOGO SYSTEM "../logo.gif" NDATA GIF>
11.2.2 嵌入不可析实体
不能与用通用实体引用嵌入可析实体一样,在文档中的任意位置简单地嵌入不可析实体。例如,清单11-2 就是一个不合法
的是XML 文档,因为LOGO 是不可析实体。如果这里的LOGO 是可析实体,本例就为有效的XML 文档。
清单11-2:试图用通用实体引用嵌入不可析实体的无效XML 文档
<?xml version="1.0" standalone="no"?>
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT ANY>
<!ENTITY LOGO SYSTEM "http://metalab.unc.edu/xml/logo.gif"
NDATA GIF>
<!NOTATION GIF SYSTEM "image/gif"
]>
<DOCUMENT>
&LOGO;
</DOCUMENT>
为了嵌入不可析实体,不采用如&LOGO;通用实体引用的方法;而是声明一个元素,把该元素作为不可析实体的占位符(例
如IMAGE)。然后声明IMAGE 元素属性SOURCE 为ENTITY 类型,SOURCE 属性仅提供不可析实体名。如清单11-3 所示。
清单11-3:正确嵌入不可析实体的合法的XML 文档
<?xml version="1.0" standalone="no"?>
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML实用大全(94)