[英]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()的文档可以在这里找到:
文档中没有建议它将解析包含词法XML的字符串以生成节点树。 我不确定你从哪里得到这个主意。
XSLT 1.0没有提供调用XML解析器的机制(XSLT 3.0提供了parse-xml()函数)。 但是msxsl允许您针对此类情况调用Javascript。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.