【发布时间】:2022-01-22 08:10:27
【问题描述】:
我正在学习 XSL,如果可能的话,我希望一个元素进行 2 次转换。
这里是元素:
<xsl:template match="//ns:text[@type='TEXT']">
<xsl:call-template name="break"/>
</xsl:template>
这是第一次转换和一段代码:
<xsl:template name="break">
<xsl:param name="text" select="string(.)"/>
<xsl:choose>
<xsl:when test="contains($text, '
')">
<xsl:if test="substring-before($text, '
') != ''">
<p>
<xsl:value-of select="substring-before($text, '
')"/>
</p>
</xsl:if>
<xsl:call-template name="break">
<xsl:with-param name="text" select="substring-after($text, '
')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<p>
<xsl:value-of select="$text"/>
</p>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
对于第二次转换,我想用translate()方法替换一些字符。
但是,请问,我该怎么做才能使用 break call-template 离开第一个转换并同时放置 translate ?
提前感谢您的帮助,
最好的问候。
【问题讨论】:
-
请发布minimal reproducible example 显示输入、可执行的 XSLT 样式表和预期结果。还要说明您的处理器支持哪个 XSLT 版本。
标签: templates xslt transformation