我有以下问题:
我想在选择中使用:
<xsl:variable name="Rows" select="/dsQueryResponse/Table/Rows/Row" />
我试过了:
<xsl:variable name="Rows">
<xsl:choose>
<xsl:when test="$paramId">
<xsl:copy-of select="/dsQueryResponse/Rows/Row" />
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="/dsQueryResponse/Rows/Row[@ID=$paramId]" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
但它没有用,有人有任何想法吗?
只是为了澄清,基于paramId如果它是空的那么我应该得到所有行,但如果paramId不为空我想应用过滤器ID = paramId,我该怎么做?
答案 0 :(得分:2)
这完全取决于您如何声明和初始化您拥有的参数或变量,并且您不会显示该部分代码。
假设你有
<xsl:param name="paramId" select="/.."/>
我会简单地做
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[not($paramId) or @ID = $paramId]"/>
答案 1 :(得分:0)
假设您已将paramId声明为
<xsl:param name="paramId" select="''" />
我会在xsl的test
属性中使用它:以这种方式
<xsl:when test="$paramId = ''">