• 热门标签

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

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

具有缺省值。(这种情况听起来有点复杂,但实际上很简单。所有的一切都说明,可忽略只含有空白的文本节点,除非这些
文本节点明确地设置成有意义的空白。对于其他情况,空白被保留。)
如果文档中的任何元素都不保留空白,那么可设置xsl:stylesheet 元素的default-space 特性为strip,所有的首尾空白
在从文本的节点中删除之后,才输出这些节点文本。对于周期表来说,这最容易实现。例如:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"
default-space="strip">
如果想保留所有元素中的空白,可使用xsl:strip-space 元素,用它识别输入文档中指定的元素,如果指定的元素表明文档
中的空白毫无意义,就不将此空白复制到输出文档中。element 特性识别要截去过剩空白的元素。例如,下面的这些规则加
到周期表样式单中,可避免过多的空白:
<xsl:strip-space element="DENSITY"/>
<xsl:strip-space element="BOILING_POINT"/>
<xsl:strip-space element="MELTING_POINT"/>
xsl:preserve-space 元素与xsl:strip-space 元素相反。其element 特性命名的元素表示其空白应保留。例如:
<xsl:preserve-space element="ATOM"/>
XML 实用大全
第 525 页
样式单内部的空白(正好与输出XML 文档中的空白相反)是毫无意义的,在缺省情况下简化为一个空格。这种情况是可以避
免的:只需将文字空白放在xsl:text 元素之间。例如:
<xsl:template select="ATOM">
<xsl:text> This is indented exactly five spaces. </xsl:text>
</xsl:template>
处理空白的一个一劳永逸的方法就是将indent-result 特性与根xsl:stylesheet 元素相关联。如果此特性的值为yes,那
么就允许处理程序将多余的空白插入到(而不是删除)输出文档中,以便使输出文档看起来好看一些。这包括缩排和行分隔
符。例如:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl=http://www.w3.org/XSL/Transform/1.0
indent result="yes">
<!- usual templates and such go here... ->
</xsl:stylesheet>
如果生成的是HTML,指定indent-result="yes"就可使输出的文档更具可读性。indent-result 的缺省值为no,这是由于其
他非HTML 的输出格式都可能将空白认为是有意义的。
XML 实用大全
第 526 页
14.18 选择
XSL 提供了根据输入文档来改变输出内容的两个元素。xsl:if 元素根据输入文档中存在的模式,决定是否输出给定的XML
段。xsl:choose 元素根据输入文档中存在的模式,从几个可能的XML 段中挑选一个。使用xsl:if 和xsl:choose 来完成的
大部分任务也需要通过应用适当的模板来实现。但有时,使用xsl:if 或xsl:choose 来解决问题会更简单、更有效。
14.18.1 xsl:if
xsl:if 元素提供了根据模式来改变输出文档的简单途径。xsl:if 的test 特性含有选择表达式,用来计算布尔值。如果此表
达式为true,即输出xsl:if 元素的内容;否则,不输出xsl:if 元素的内容。例如下面的模板取消所有ATOM 元素的名称。
除列表中的最后一个元素外,在所有的元素后加入一个逗号和一个空格。
<xsl:template match="ATOM">
<xsl:value-of select="NAME"/>
<xsl:if test="not(position()=last())">, </xsl:if>
</xsl:template>
本模板确保列表类似于“Hydrogen, Helium”样子,而不是“Hydrogen, Helium, ”的样子。
不存在xsl:else 或xsl:else-if 元素。xsl:choose 元素提供了这一功能。
14.18.2 xsl:choose
根据几个可能的条件,xsl:choose 元素从几个的输出结果中选择一个。xsl:when 子元素提供各种条件及其相关的输出模板。
xsl:when 元素test 特性为布尔值的选择表达式。如果多个条件都为真,那么只显示第一个为真的条件。如果xsl:when 元
素都不为真,那么显示xsl:otherwise 子元素的内容。例如,下面的规则根据ATOM 元素的STATE 特性是为SOLID、LIQUID
还是GAS,来改变输出文档的颜色:
<xsl:template match=”ATOM”>
<xsl:choose>
<xsl:when test=”@STATE=’SOLID’ “>
<P style=”color:black”>
<xsl:value-of select=”.”/>
</P>
</xsl:when>
<xsl:when test=”@STATE=’LIQUID”’>
<P style=”color:blue”>
XML 实用大全
第 527 页
<xsl:value-of select=”.”/>
</P>
</xsl:when>
<xsl:when test=”@STATE=’GAS”’>
<P style=”color:red”>
<xsl:value-of select=”.”/>
</P>
</xsl:when>
<xsl:other>
<P style=”color:green”>
<xsl:value-of select=”.”/>
</P>
</xsl:other>
</xsl:choose>
</xsl:template>
XML 实用大全
第 528 页
14.19 合并多个样式单
单一XML 文档可以使用在许多不同的DTD 中描述的许多不同的标记符号集。有时希望将不同的标准样式单用于那些不同的符
号集。但是,也可能还要将样式规则用于特定的文档。xsl:import 和xsl:include 元素可用来合并多个样式单,以便组织
和重新将样式单用于不同的符号集和目的。
14.19.1 使用xsl:import 进行录入
xsl:import 元素为顶级元素,其href 特性提供导入的样式单的URI。所有的xsl:import 元素都必须放在xsl:stylesheet
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML实用大全(148)