曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
<xsl:template match="pi( xml-stylesheet )">
<xsl:pi name="xml-stylesheet">
<xsl:value-of select="."/>
</xsl:pi>
</xsl:template/>
事實上,區分根元素和根節點的主要原因之一就是,為了讀取和處理序言中的處理指令。盡管xml-stylesheet 處理指令使
用“名稱=值”這樣的句法,但XSL 并不把它們當做特性看待,這是因為處理指令不是元素。處理指令的值只是跟在其名稱
后面的空格和結束符?>之間的所有內容。
用來施加模板的缺省規則并不匹配處理指令。因此,遇到xml-stylesheet 處理指令時,如果要使缺省規則起作用,需要包
括xsl:apply-templates 元素,此元素在適當的地方匹配缺省規則。例如,下面這個用于根節點的模板確實將模板應用于處
理指令:
<xsl:template match="/">
<xsl:apply-templates select="pi()"/>
<xsl:apply-templates select="*"/>
</xsl:template>
14.6.9 用text()來匹配文本節點
盡管文本節點的值包括在選擇的元素值部分中,但它們作為節點通常被忽視。但是,text()操作符確實能夠明確選擇一個元
素的文本子元素。盡管這種操作符有圓括號,但不需要任何參數。例如:
<xsl:template match="SYMBOL">
<xsl:value-of select="text()"/>
</xsl:template>
此操作符存在的主要原因是為了用于缺省規則。無論作者是否指定缺省規則,XSL 處理程序必須提供下列的缺省規則:
<xsl:template match="text()">
<xsl:value-of select="."/>
</xsl:template>
XML 實用大全
第 475 頁
這意味著無論何時將模板應用于文本節點,就會輸出此節點的文本。如果并不需要這種缺省行為,可以將其推翻。例如,在
樣式單中,包括下列空模板規則,將會阻止輸出文本節點,除非另外的規則明確地匹配。
<xsl:template rnatch="text()">
</xsl:template>
14.6.10 使用“或”操作符|
豎線(|)允許一條模板規則匹配多種模式。如果節點與某種模式相匹配,則此節點將激活該模板。例如,下面模板規則與
ATOMIC_NUMBER 和ATOMIC_WEIGHT 元素都匹配:
<xsl:template match=”ATOMIC_NUMBER|ATOMIC_WEIGHT”>
<B><xsl:apply-templates/></B>
</xsl:template>
也可以在|兩邊加入空格,這樣使代碼更清晰。例如:
<xsl:template match=”ATOMIC_NUMBER | ATOMIC_WEIGHT”>
<B><xsl:apply-templates/></B>
</xsl:template>
還可以順次使用兩個以上的模式。例如,下面的模板規則作用于A
XML 實用大全
第 476 頁
14.7 選擇節點的表達式
在xsl:apply-templates、xsl: value-of、xsl:for-each、xsl:copy-of 和xsl:sort 中,可使用select 特性來精確指定對
哪個節點進行操作。此特性值即為表達式(expression)。表達式是前節討論的匹配模式的超集。也就是說,所有的匹配模
式都是選擇表達式,但并非所有的選擇表達式都是匹配模式。讓我們來回顧一下,匹配模式能夠使用元素名、子元素、后代
以及特性來匹配節點,除此之外,還可以對這些項目進行簡單的測試。選擇表達式可以使用所有的這些條件來選擇節點,而
且還可以通過參考父元素、同屬元素來選擇節點,以及通過更加復雜的測試來選擇節點。此外,表達式并不局限于只生成一
組節點列表,而且還產生布爾值、數值和字符串。
14.7.1 節點軸
表達式并不局限于指定當前節點的子節點和后代節點。XSL 提供許多軸(axe),使用這些軸可以從相對于當前節點(通常
為模板匹配的節點)的樹形結構的不同部分進行選擇。表14-2 概述了這些軸及其含義。
表14-2 表達式的軸
軸 選自于
from-ancestors() 當前節點的父節點、當前節點的父節點的父節點、
當前節點的父節點的父節點的父節點,依次類推至
根節點
from-ancestors-or-self() 當前節點的后代以及當前節點本身
from-attributes() 當前節點的特性
from-children() 當前節點的直系子節點
from-descendants() 當前節點的子節點、當前節點的子節點的子節點,
依次類推
from-descendants-or-self() 當前節點本身及其后代節點
from-following() 起始于當前節點末尾之后的所有節點
from-following-siblings() 起始于當前節點末尾之后并且與當前節點具有同一
個父節點的所有節點
from-parent() 當前節點的單一父節點
from-preceding() 當前節點開始之前開始的所有節點
from-preceding- siblings() 當前節點開始之前開始的所有節點并且與當前節點
具有同一個父節點的所有節點
XML 實用大全
第 477 頁
from-self() 當前節點
from-following 和from-preceding 軸不可靠,可能不會包括在XSL 的最終發布版中。如果包括在XSL 的最終發布
版中,其準確的含義可能會改變。
這些軸的功能是選擇表14-2 第二列中列出的節點。圓括號中包括要進一步對此節點列表篩選的選擇表達式。例如,可能包
括由下列模板規則選擇的元素名稱:
<xsl:template match="ATOM">
<tr>
<td>
<xsl:value-of select="from-children(NAME)"/)
</td>
<td>
<xsl:value-of select="from-children(ATOMIC_NUMBER)"/>
</td>
<td>
<xsl:value-of select="from-children(ATOMIC_WEIGHT)"/>
</td>
</tr>
</xsl:template>
此模板規則匹配ATOM 元素。當ATOM 元素匹配時,NAME 元素、ATOMIC_NUMBER 元素和ATOMIC_WEIGHT 都從此匹配的ATOM 元
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(134)