簡體   English   中英

msxsl:node-set()無法正確解析XML片段

[英]XML fragment is not resolved correctly by msxsl:node-set()

我有以下情況。

<xsl:template match="/s0:NotChangableTemplate">
    <ns0:Root>
        <xsl:for-each select="s0:Element">
            <xsl:variable name="var" select="ext:MyCustomFunction(string(s0:Input/text()))" />

            <xsl:call-template name="MyTemplate">
                <xsl:with-param name="param" select="string($var)" />
            </xsl:call-template>
        </xsl:for-each>
    </ns0:Root>
</xsl:template>

<xsl:template name="MyTemplate">
    <xsl:param name="param" />

    <xsl:variable name="myVar">
        <xsl:value-of select="$param" disable-output-escaping="yes" />
    </xsl:variable>

    <xsl:for-each select="msxsl:node-set($myVar)/s0:Value">
        <xsl:copy-of select="self::node()" />
    </xsl:for-each>
</xsl:template>

模板/s0:NotChangableTemplate是生成的代碼,我無法更改它。 函數MyCustomFunction返回即以下XML片段作為字符串。

<s0:Value>'74024042','66111050','74024046','66110042','32060090'</s0:Value>
<s0:Value>'66111040','53260042','17439060','66111048','74024040'</s0:Value>
<s0:Value>'66110040','66110048','66110044','74024044','53283040'</s0:Value>
<s0:Value>'66111044','66111042','66111046','74024036','66110046'</s0:Value>
<s0:Value>'18235','17439058','53283038','53260036','66111038'</s0:Value>
<s0:Value>'74024038'</s0:Value>

MyTemplate我想將其解析為樹並在其中導航。 在這個偽函數中,我只想將節點復制到輸出XML中。 但是找不到s0:Value節點。

如果我在變量中設置片段修復程序,它將起作用。

<xsl:template name="MyTemplate">
    <xsl:variable name="myVar">
        <s0:Value>'74024042','66111050','74024046','66110042','32060090'</s0:Value>
        <s0:Value>'66111040','53260042','17439060','66111048','74024040'</s0:Value>
        <s0:Value>'66110040','66110048','66110044','74024044','53283040'</s0:Value>
        <s0:Value>'66111044','66111042','66111046','74024036','66110046'</s0:Value>
        <s0:Value>'18235','17439058','53283038','53260036','66111038'</s0:Value>
        <s0:Value>'74024038'</s0:Value>
    </xsl:variable>

    <xsl:for-each select="msxsl:node-set($myVar)/s0:Value">
        <xsl:copy-of select="self::node()" />
    </xsl:for-each>
</xsl:template>

我可以在MyTemplate中進行哪些更改,使其也可以像示例中那樣使用fix變量值?

提前致謝。

msxsl:node-set()的文檔可以在這里找到:

支持msxsl:node-set()函數

文檔中沒有建議它將解析包含詞法XML的字符串以生成節點樹。 我不確定你從哪里得到這個主意。

XSLT 1.0沒有提供調用XML解析器的機制(XSLT 3.0提供了parse-xml()函數)。 但是msxsl允許您針對此類情況調用Javascript。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM