曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
具有缺省值。(這種情況聽起來有點復雜,但實際上很簡單。所有的一切都說明,可忽略只含有空白的文本節點,除非這些
文本節點明確地設置成有意義的空白。對于其他情況,空白被保留。)
如果文檔中的任何元素都不保留空白,那么可設置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.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(148)