3
我上採用了許多模板與之相匹配的樣式表的工作屬性:如何在XSLT中應用或鏈接多個匹配模板?
<xsl:template match="//one" priority="0.7">
<xsl:param name="input" select="."/>
<xsl:value-of select="util:uppercase($input)"/>
<xsl:next-match />
</xsl:template>
<xsl:template match="/stuff/one">
<xsl:param name="input" select="."/>
<xsl:value-of select="util:add-period($input)"/>
</xsl:template>
<xsl:function name="util:uppercase">
<xsl:param name="input"/>
<xsl:value-of select="upper-case($input)"/>
</xsl:function>
<xsl:function name="util:add-period">
<xsl:param name="input"/>
<xsl:value-of select="concat($input,'.')"/>
</xsl:function>
我想要做的是能「鏈」上面兩個功能,使「字符串」的輸入會在輸出中呈現爲「STRING」。 (和期間)。我想這樣做,不需要知道任何其他模板中的其他模板。因此,例如,我希望能夠添加「util:add-colon」方法,而無需使用現有模板打開引擎蓋和猴子。
我正在玩<xsl:next-match/>
指令來完成這一點。將它添加到上面的第一個模板當然會調用util:uppercase和util:add-period,但輸出是每個模板輸出的聚集(即'STRINGstring')。好像應該有一個優雅的方式來鏈接任意數量的模板一起使用像<xsl:next-match/>
這樣的東西,但是每個模板的輸出都會提供鏈中下一個模板的輸入。我忽略了一些明顯的東西?