变量的XSL节点集。选择“找不到路径”。

时间:2018-07-24 15:26:18

标签: xml xslt xslt-1.0 msxsl

对此很生气,并尝试了这里找到的各种解决方案,但到目前为止似乎没有任何效果。

我有这样的XSL:

<xsl:variable name="reserved">
    <xsl:value-of select="utils:getReservedCodes()"/>
</xsl:variable>

其值由某些JScript确定:

function getReservedCodes() {
    reservedCodes = reservedCodesList.join("");
    return reservedCodes;
}   

如果我使用来输出reserved的值

<xsl:value-of select="$reserved"/> 

我得到这样的东西:

<codey value="-STB"></codey><codey value="-SO"></codey>

然后,我尝试将此变量的内容用作节点集:

<xsl:for-each select="msxsl:node-set($reserved)/codey">
    <xsl:value-of select="@value"/>
</xsl:for-each>

此for-each循环不输出任何内容。我从其他答案中得到的印象是这可能是名称空间问题,因此我尝试用xmlns=""声明变量,我用codey包围了所有<Codes xmlns="">条目,而我'曾经尝试过使用JScript前缀,以防万一,但是我似乎什么也无法工作。

我的样式表中没有默认的名称空间:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"    
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    xmlns:utils="urn:utils">

如果有什么用,我的脚本头看起来像这样:

<msxsl:script implements-prefix="utils" language="javascript">

如果外面有人有任何建议,我将永远感激不已。

1 个答案:

答案 0 :(得分:0)

以防万一它可以帮助其他人登陆,我设法通过应用this问题中的代码并让我的JScript返回逗号分隔的字符串来解决问题。