将node-set分配给xsl:variable,使用if条件迭代xml

时间:2013-12-12 12:37:57

标签: xslt xpath

我编写此代码以将node-set分配给xsl:variable

<xsl:variable name="disableSelected">
    <xsl:for-each select="rejectSignatureType">
        <xsl:if test="disableInd = 'true'">
            <xsl:value-of select="@signatureTypeId"/>
        </xsl:if>
    </xsl:for-each>
</xsl:variable>

但不是node-set,而是返回字符串值。这是我正在遍历的示例XML。

<rejectSignatureType signatureTypeId="closeActionSignaturetypeId1">      
    <disableInd>true</disableInd>
</rejectSignatureType>
<rejectSignatureType signatureTypeId="closeActionSignaturetypeId2">      
    <disableInd>false</disableInd>
</rejectSignatureType>
<rejectSignatureType signatureTypeId="closeActionSignaturetypeId3">      
    <disableInd>true</disableInd>
</rejectSignatureType>

有些人可以帮助如何在xsl:variable中返回节点集。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可以在单个XPath表达式中执行此操作:

<xsl:variable name="disableSelected"
    select="rejectSignatureType[disableInd = 'true']/@signatureTypeId"/>

这会将变量设置为包含所有相关signatureTypeId属性节点的节点集。