【问题标题】:How can we use xsl:function in xsl:when我们如何在 xsl:when 中使用 xsl:function
【发布时间】:2016-07-25 08:39:43
【问题描述】:

问题是我需要使用 xsl:when 多次测试一个状态,并且我想使用这样的 xsl:function

<xsl:function name="isPrime">
    <xsl:param name="var1"/>
    <xsl:param name="var2"/>
    <xsl:value-of select="$var1='0' and $var2=1"/>
</xsl:function>

<xsl:when test="isPrime($var1, $var2)">
....
<xsl:when test="isPrime($var1, $var2)">
....
<xsl:when test="isPrime($var1, $var2)">

有没有办法做到这一点?还是有解决此类问题的方法?

【问题讨论】:

  • 问题不在于您需要 X 或您想要 Y,问题在于某些事情失败了。告诉我们它是如何失败的。
  • 没有失败。在我的代码中,一个长的测试用例重复太多,我希望我的代码更具可读性和可重写性
  • 好的,这已经是比我们以前更好的问题陈述了。但我认为你已经遗漏了太多的背景来回答这个问题。那些 xsl:when 元素是否在同一个 xsl:choose 中?在同一个 xsl:template 中?还是散落在样式表各处?
  • 我在多个 xsl 文件中使用它,我想把函数放在头文件中,然后在需要时使用它
  • 没有头文件这样的东西,但您可以使用 xsl:include 和 xsl:import 来导入共享模块中的代码。

标签: java xslt


【解决方案1】:

把你的函数改成下面的代码sn-p

<xsl:function name="isPrime">
    <xsl:param name="var1"/>
    <xsl:param name="var2"/>
    <xsl:sequence select="$var1='0' and $var2=1"/>
</xsl:function>

然后使用函数

<xsl:variable name="return_value" select="{isPrime($var1, $var2)}"/>
<xsl:when test="{$return_value}">

【讨论】:

  • &lt;xsl:variable name="return_value" select="{isPrime($var1, $var2)}"/&gt; 错了,应该是&lt;xsl:variable name="return_value" select="isPrime($var1, $var2)"/&gt;,而xsl:when 就是&lt;xsl:when test="$return_value"&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
相关资源
最近更新 更多