0

我有以下问题:

我想在选择时使用:

<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,我该怎么做?

4

2 回答 2

2

这完全取决于您如何声明和初始化您拥有的参数或变量,并且您不会显示代码的那部分。

假设你有

<xsl:param name="paramId" select="/.."/>

然后我会简单地做

<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[not($paramId) or @ID = $paramId]"/>
于 2013-09-24T11:35:21.857 回答
0

假设您将 paramId 声明为

<xsl:param name="paramId" select="''" />

我会test以这种方式在 xsl:when 的属性中使用它

<xsl:when test="$paramId = ''">
于 2013-09-24T11:27:48.457 回答