深入XSL(3)
---模板規則和模式
翻譯:孫一中
模板規則
模板規則由xsl:template元素來規定."match"屬性標識了規則應用的源節點(集).xsl:template. 例如:一個XML文檔可能包含下面的內容:
This is an <emph>important</emph> point.
下列的模板規則匹配emph類型的元素,另有一個模板產生一fo:sequence 格式化對象,其font-weight屬性為粗體(bold).
<xsl:template match="emph">
<fo:sequence font-weight="bold">
<xsl:process-children/>
</fo:sequence>
</xsl:template>
xsl:process-children元素會遞歸處理”父”元素的“子”節點。
模式
一個模式是一個字符串,它用於匹配XML源文件中的一個元素.最通常的模式規定了匹配元素的類型名稱. 例如, emph模式匹配類型為emph的元素.更復雜的模式規定了相匹配元素的”祖先”節點的元素類型.例如, olist/item 模式匹配類型為item並且父親元素為olist類型的元素. “祖先”序列中的每個元素類型之後可以跟著一系列由逗號分隔的限定詞. 如, list[attribute(ordered)="yes")]/item[first-of-type()] 匹配item類型的元素,位於相同層次的元素的第一個,而且父節點類型為list,屬性名”ordered”的值為”yes”.
這部分詳細描述了模式的語法和語義.匹配元素的模式被認為是匹配模式(match pattern). xsl:template 的模式就是匹配模式. 一個模式也可以用來選擇一系列的節點;這樣的模式被認為是選擇模式(select pattern).在一個選擇模式中, 存在一個當前節點來提供選擇的前後關系.該模式會選擇相匹配的一列源節點.這些節點是以文件來排序的. xsl:process, xsl:for-each 和xsl:value-of 中的模式都是選擇模式.
------------------------------------------------------------------------------