gpt4 book ai didi

xml - 如何在 XSLT 中应用或链接多个匹配模板?

转载 作者:数据小太阳 更新时间:2023-10-29 02:32:42 28 4
gpt4 key购买 nike

我正在处理一个样式表,该样式表使用许多具有匹配属性的模板:

<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/> 的东西,但是让每个模板的输出提供链中下一个模板的输入。我是否忽略了一些明显的东西?

最佳答案

模板链接可以通过在 xsl:variable 中捕获 template1 的输出,然后将 template2 应用于此内容来完成xsl:变量。

但是,我建议使用函数组合:

util:add-period(util:uppercase(.))

另外,稍微改变util:add-period()即可达到预期效果:

使用:

<xsl:function name="util:add-period" as="xs:string">  
<xsl:text>.</xsl:text>
</xsl:function>

关于xml - 如何在 XSLT 中应用或链接多个匹配模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2791404/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com