分享
 
 
 

新增批注、处理指令与CDATA 区段

王朝other·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

在本章中,你将学习如何加入三种XML 标签到文件中:批注、处理指令,与CDATA 区段。虽然这些项目在格式正确(或有效)的XML 文件中并不是必要的,但是它们拥有极大用处。你可以使用批注来让文件更具可读性,也可以使用处理指令来修改应用软件处理或显示文件的方法。同时你也可以使用CDATA 区段来将字符的任何组合包含在元素的字符数据中。

加入批注

如同你在第一章中学到的,XML 规格的第6 个目标就是「XML 文件应该是易读的且合理清楚的」。虽然XML 处理器通常会忽略批注,但是适当放置且具意义的批注可以大大增进XML 文件的可读性与清楚度,就像批注可以让程序的原始码如C 或BASIC 变得更容易了解。

注意

在Microsoft Internet Explorer 5 中,XML 处理器并不会将批注的文字解析成XML 卷标,也不会以任何其它方式来处理批注。然而,处理器让批注的文字可以被HTML 网页中的script 使用。在第九章中,你将学习如何使用script 来存取批注文字,就像使用XML 文件中其它的组件一样。

如果你将文件于浏览器中直接开启,而且文件并没有参照的样式表,则Internet Explorer 5 会将所有的批注显示于XML 文件中。

批注的型式

批注以<!--字符起始,并以-->字符结束。在这两个定义符号之间,你可以输入任何想要的文字-除了双连符号(--)之外。你甚至可以输入被禁止的(<)与(&)符号。下面是一段合法批注的范例:

<!--Here you can type any text except a double hyphen. The <and &characters are OK!-->

你可以放置批注的位置

你可以将批注放在XML 文件中标签之外的任何地方。换言之,你可以将它们放在文件的序文中:

<?xml version="1.0"?>

<!--Here is a comment in the prolog.-->

<DOCELEMENT>

This is a very simple XML document.

</DOCELEMENT>

你可以将批注接在文件的元素之后:

<?xml version="1.0"?>

<DOCELEMENT>

This is a very simple XML document.

</DOCELEMENT>

<!--This comment follows the document element.-->

而你也可以将批注放在文件的内容中:

<?xml version="1.0"?>

<DOCELEMENT>

<!--This comment is part of the content of the root element.-->

This is a very simple XML document.

</DOCELEMENT>

下面是一个违法的批注范例,因为批注被放在标签中:

<?xml version="1.0"?>

<DOCELEMENT <!--This is an ILLEGAL comment!-->>

This is a very simple XML document.

</DOCELEMENT>

然而,你可以将批注放在文件型态宣告(DTD)中-虽然DTD 也是标签的一种-但只要批注不是位在DTD 里其它的标签中即可。你将在第五章学习DTD 的相关知识与如何将批注放在DTD中。

使用处理指令

处理指令的目的是提供XML 处理器传送给应用软件的信息。

注意

回想第二章所介绍的,XML 处理器是一个读取与储存XML 文件内容的软件模块。应用软件是一个个别的软件模块,负责从处理器取得文件的内容并管理与显示这些内容。当你在Internet Explorer 5 中显示XML 时,浏览器会提供XML 处理器与少部分的应用软件。(如果你撰写script来管理与显示XML 文件,你必须自己提供部分的应用软件)

处理指令的类型

处理指令拥有下列一般类型:

<?target instruction ?>

这里的target 是该指令被导引到的应用软件的名字。任何的名称都可以,只要遵守下列规则即可:

名字必须以字母或底线(_)开始,后面接着零或多个字母、数字、句点(.)、连字号(-),或底线(_)。

名称「xml」,不管是大写字母或小写字母组成的都会被保留。(如同你所见到的,你使用「xml」以小写字母来代表文件的XML 宣告,这也是处理指令的一种。)

而instruction 则是被传送到应用软件的信息。它是由任何连续的字符组成,除了「?>」字符对以外(它被保留作终止处理指令用)。

如何使用处理指令

你可以在XML 文件中使用的特殊处理指令是根据读取文件的处理器而定。如果你使用Internet Explorer 5 当作XML 处理器(如同本书中普遍使用的),你将发现处理器的两个主要用途:

你可以使用标准的、保留的处理指令来告诉Internet Explorer 5 如何处理或显示文件。你在本书中见到的范例是处理指令告诉Internet Explorer 5 去使用特定样式表来显示文件。例如,下面的处理指令告诉Internet Explorer 5 使用Inventory01.css 的CSS 来显示文件:

<?xml-stylesheet type="text/css" href="Inventory01.css"?>

如果你撰写网页的script 来处理与显示XML 文件,你可以将任何非保留的处理指令加入到文件中,而且你的script 会读取这些指令并做出适当的处理。例如,你可能会将下面的处理指令加到文件中来告诉你的script 要显示的详细程度:

<?MyScript detail="2" ?>

在第九章中,你将学习如何使用script 来存取XML 文件中的组件,包括任何的处理指令。

||||||你可以放置处理指令的地方

你可以将处理指令加到XML 文件中标签以外的任何地方-意即,你可以将指令放在与放置批注相同的地方:在文件的序文中,后面接着文件元素,或者就放在元素的内容中。下面是一份处理指令位在每一个合法位置的XML 文件:

<?xml version="1.0"?>

<!--The following is a processing instruction in the prolog:-->

<?xml-stylesheet type="text/css" href="Inventory01.css"?>

<INVENTORY>

<BOOK>

<!--Here 's a processing instruction within an

element 's content:-->

<?ScriptA emphasize="yes" ?>

<TITLE>The Adventures of Huckleberry Finn</TITLE>

<AUTHOR>Mark Twain</AUTHOR>

<BINDING>mass market paperback</BINDING>

<PAGES>298</PAGES>

<PRICE>$5.49</PRICE>

</BOOK>

<BOOK>

<TITLE>Leaves of Grass</TITLE>

<AUTHOR>Walt Whitman</AUTHOR>

<BINDING>hardcover</BINDING>

<PAGES>462</PAGES>

<PRICE>$7.75</PRICE>

</BOOK>

</INVENTORY>

<!--And here 's one following the document element:-->

<?ScriptA Category="books" Style="formal" ?>

下面则是一个放在卷标中的违法处理指令的范例:

<!--The following element contains an ILLEGAL

processing instruction:-->

<BOOK <?ScriptA emphasize="yes" ??>>

<TITLE>Leaves of Grass</TITLE>

<AUTHOR>Walt Whitman</AUTHOR>

<BINDING>hardcover</BINDING>

<PAGES>462</PAGES>

<PRICE>$7.75</PRICE>

</BOOK>

然而,你可以将处理指令放在文件型态定义(DTD)中-虽然DTD 也是一种卷标-但是只要处理指令不是放在同样位在DTD 中的其它标签之中即可。你将在第五章中学习有关DTD 的知识,以及如何将处理指令放在DTD 中。

包含CDATA 区段

如同你在第三章中学到的,你不能直接将(<)或(&)符号放置在元素内容中的字符数据里。要避开这个限制的一种方法是使用字符参照(& #60;或& #38;)或预先定义的普通实体参照(& lt;或& amp;),如同你在第六章中将学到的。然而,如果你需要加入多个(<)或(&)字符,使用这些参照将变得不合适且会让资料变得难以阅读。在这种情况下,将包含限制字符的文字放置在CDATA 区段中将会比较容易完成工作。

CDATA 区段的类型

CDATA 区段以字符「<![CDATA[」开始,并以「]]>」字符结束。在这两个定义符号之间,你可以输入任何字符(包括「<」或「&」),除了「]]>」之外。(因为,该字符会被解释成CDATA区段的结束。)所有位在CDATA 区段中的字符都被视为元素字符数据的字义 (literal) 部分,而不是XML 标签。

下面是一个合法CDATA 区段的范例:

<![CDATA [

Here you can type any characters except two right brackets followed

by a greater-than symbol.

]]>

注意

关键词CDATA,就像其它你所见到的XML 关键词,必须以大写字母撰写。

如果你想包含一段原始码或标签当作被显示在浏览器中元素的真实字符数据的一部份,你可以使用CDATA 区段来防止XML 解析器将「<」或「&」字符解释成XML 卷标。下面就是一个范例:

<A-SECTION>

The following is an example of a very simple HTML page:

<![CDATA[

<HTML>

<HEAD>

<TITLE>R.Jones &Sons</TITLE>

</HEAD>

<BODY>

<P>Welcome to our home page!</P>

</BODY>

</HTML>

]]>

</A-SECTION>

例如,若没有CDATA 区段,处理器会假设<HTML>是套迭的元素的起始部分,而不是A-SECTION 元素的字符数据的起始部分。

注意

既然你可以直接将「<」与「&」字符加入CDATA 区段中,你就不必使用字符参照(& #60;与&#38;)或预先定义的普通实体参照(& lt;与& amp;),笔者将在第六章中解释字符参照与实体参照。事实上,如果你使用这类的参照,解析器会将参照中的每个字符照字面解释,且不会更换掉含有「<」或「&」字符的参照。

你可以放置CDATA 区段的地方

你可以将CDATA 区段放置在字符数据可以出现的任何地方-也就是说,在元素的内容中却不在XML 标签中。下面是一个合法放置CDATA 区段的范例

<?xml version="1.0"?>

<MUSICAL>

<TITLE_PAGE>

<![CDATA[

<Oklahoma!>

By

Rogers &Hammerstein

]]>

</TITLE_PAGE>

<!--Other elements here...-->

</MUSICAL>

显示于下页的错误型式XML 文件包含了两个违法的CDATA 区段。第一个不是在元素的内容中。第二个则是位在文件元素的内容之中,但却不是在起始标签中。

<?xml version="1.0"?>

<![CDATA[ ILLEGAL::not within element content!]]>

<DOC_ELEMENT>

<SUB_ELEMENT <![CDATA[ ILLEGAL::inside of markup!]]>>

sub-element content...

</SUB_ELEMENT>

</DOC_ELEMENT>

注意

CDATA 区段不能成巢状套迭。亦即,你不能将一个CDATA 区段放到另一个区段中。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有