深入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 中的模式都是选择模式.
------------------------------------------------------------------------------