我正在寻找一种在XSL中实现这一目标的替代方案

时间:2017-04-11 22:57:17

标签: xml xslt xslt-1.0

我是XSLT的初学者。这是我的XSL示例:

<xsl:when test="/can/be/a/very/long/location/path/@value > 0 ">
    <xsl:value-of select="/can/be/a/very/long/location/path/@value" />
</xsl:when>

似乎<value-of select="...">可以更简洁。怎么可能这样做?

3 个答案:

答案 0 :(得分:2)

这也可以这样做 -

<xsl:variable name="location" select="/can/be/a/very/long/location/path/@value"/>

<xsl:if test="$location">
    <xsl:value-of select="$location" />
</xsl:if>

<xsl:when>主要用于有多个条件且正确的方法是

<xsl:choose>
  <xsl:when test="condition1"> </xsl:when>
  <xsl:when test="condition2"> </xsl:when>
  <xsl:when test="condition3"> </xsl:when>
  <xsl:otherwise> </xsl:otherwise>
</xsl:choose>

由于

答案 1 :(得分:2)

您可以简单地将<xsl:template>与谓词一起用于此任务:

<xsl:template match="/can/be/a/very/long/location/path[@value &gt; 0]">
  <xsl:value-of select="@value" />      <!-- current axis is 'path' -->
</xsl:template>

答案 2 :(得分:0)

对于这个特定的例子,你可以简单地写:

<xsl:value-of select="/can/be/a/very/long/location/path/@value[. > 0]" />

如果没有选择值,则不输出任何值