• 热门标签

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

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

于样式单中的几个不同地方时,可将它转换成命名的模板。命名的模板与变量类似,但能够包括从应用模板的位置获得的数
据,而不是仅仅插入固定的文本。
xsl:template 元素有name 特性,使用此特性,可隐性地调用该元素,甚至在非间接地应用此元素时也是如此。例如,下面
显示的是用于给上面模式命名的模板:
<xsl:template name="ATOM_CELL">
<td>
<font face="Times, serif" color="blue" size="2">
XML 实用大全
第 521 页
<b>
<xsl:value-of select="."/>
</b>
</font>
</td>
</xsl:template>
宏中间的<xsl:value-of select="."/>元素被替换为调用此模板的当前节点的内容。
xsl:call-template 元素出现在模板规则的内容中,必须有name 参数,用来对此元素要调用的模板进行命名。处理后,
xsl:call-template 元素被它命名的xsl:call-template 元素的内容所代替。例如,现在我们使用xsl:cal-template 元素
来调用给模板命名的ATOM_CELL,那么可按下列方法重写ATOMIC_NUMBER 规则:
<xsl:template match="ATOMIC_NUMBER">
<xsl:call-template name="ATOM_CELL"/>
</xsl:template>
这种相当简单的例子仅省掉了几行代码,但模板越复杂,并且重复使用的次数越多,样式单的复杂程度降低得就越大。命名
的模板正如变量一样,还有提取样式单中的通用模式的优点,所以可作为一个模板来编辑。例如,如果要将原子序数、原子
量和其他关键值的颜色由蓝色改变为红色,那么只需要在命名模板中对此改变一次即可。不必在每个分立的模板规则中单独
改变此颜色。这有助于在较长的开发过程中,使样式保持更大的一致性。
14.16.1 参数
对命名模板的每一次分开调用,都可将参数传递给模板,以便定制其输出内容。在xsl:template 元素中,参数是由
xsl:param-variable 子元素来表示的。在xsl:call-template 元素中,参数是由xsl:param 子元素来表示的。
例如,假定要将每个原子单元格链接到一特定的文件中。其输出类似于下列情景:
<td>
<font face=”Times, serif” color=”blue” size=”2”>
<b>
<a href=”atomic_number.html”>52</a>
</b>
</font>
XML 实用大全
第 522 页
</td>
其诀窍是,由于对模板的每次分开调用都会引起href 特性的值发生变化,所以必须从调用模板的位置将href 特性的值传递
过去。
<td>
<font face=”Times, serif” color=”blue” size=”2”>
<b>
<a href=”atomic_weight.html”>4.0026</a>
</b>
</font>
</td>
支持此种情况的模板与下列代码类似:
<xsl:template name=”ATOM_CELL”>
<xsl:param-variable name=”file”>
index.html
</xsl:param-variable>
<td>
<font face=”Times, serif” color=”blue” size=”2”>
<b>
<a href=”{$file}”><xsl:value-of select=”.”/></a>
</b>
</font>
</td>
</xsl:template>
xsl:param-variable 元素的name 特性给参数起个名称(如果有多个参数则更为重要),如果调用过程不提供值的话,那么
xsl:param-variable 元素的内容就为要使用的这个参数提供一个缺省值。(这个缺省值还可以使用expr 特性,以字符串表
达式的形式给出,与xsl:variable 完全一样。)
XML 实用大全
第 523 页
当调用此模板时,xsl:call-template 元素的xsl:param 子元素使用其name 特性来识别参数、使用其内容来给参数提供一
个值的方法,从而提供该参数的值。例如:
<xsl:template match=”ATOMIC_NUMBER”>
<xsl:call template macro=”ATOM_CELL”>
<xsl:param name=”file”>atomic_number.html</xsl:param>
<xsl:value-of select=”.”/>
</xsl:call-template>
</xsl:template>
这是一个相当简单的例子,但复杂得多的命名模板是存在的。例如,为了用于许多不同样式单(每种样式单一定要单独改变
网页作者名字、网页标题和版权日期几个参数)的输入,很可能需要定义Web 站点上网页的页眉和页脚宏。
XML 实用大全
第 524 页
14.17 删除和保留空白
读者可能已经注意到,到目前为止,所有输出实例的格式化方式都有点奇怪。造成这种现象的原因是,源文档需要将长行划
分成多行,以便适合本书页边距的要求。不幸的是,往输入文档中增加额外的空白,就会带到输出文档中。对于计算机来说,
毫无意义的空白的具体内容并不重要,但对于人来说,这些空白内容就令人困惑。
像ATOMIC_NUMBER 或DENSITY 元素那样,用于文本节点的缺省行为就是保留所有的空白。常见的DENSITY 元素看起来如下面
那样:
<DENSITY UNITS="grams/cubic centimeter"><!- At 300K ->
7.9
</DENSITY>
当取其值时,值中就会包括首、尾空白(如下所示),尽管这个空白在此处只是用来满足打印页面的要求,但没有什么实际
意义:
7.9
但是,有一种例外的情况。如果文本节点只含有空白,没有其他文本,那么这个空白就认为是毫无意义,并被删除。但对此
例外还有一种例外:如果文本先辈的xml:space 特性保存有值,那么就不会删除此文本,除非更近的先辈的xml:space 特性
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML实用大全(147)