Javascript 将xml节点传递给xsl脚本

Javascript 将xml节点传递给xsl脚本,javascript,xml,xslt,client-side,Javascript,Xml,Xslt,Client Side,我试图将xml节点传递给xsl脚本,但它无法将其识别为xml节点。 因此,在该节点上执行的任何操作都会失败,下面是我的代码示例 调用样式表 <xsl:value-of select="user:getDetail( this)"/> 请帮忙 下面是xml和xsl的示例 XML XSL 我希望输出是每个单元格中的XML,而不是只得到节点文本。 传递XML的目的是使用selectSingleNode和其他JS函数执行OEM操作 因为节点不是xml,所以失败。如果要将xml节点复制到结果

我试图将xml节点传递给xsl脚本,但它无法将其识别为xml节点。 因此,在该节点上执行的任何操作都会失败,下面是我的代码示例

调用样式表

<xsl:value-of select="user:getDetail( this)"/>
请帮忙

下面是xml和xsl的示例

XML XSL 我希望输出是每个单元格中的XML,而不是只得到节点文本。 传递XML的目的是使用selectSingleNode和其他JS函数执行OEM操作
因为节点不是xml,所以失败。

如果要将xml节点复制到结果树,则需要分别使用XSLT。xsl:value of始终使用所选节点的字符串值构造文本节点,它不会将节点本身复制到输出。这对于您拥有的任何节点或结果树片段都是一样的,无论它是一个简单地用纯XSLT/XPath处理的普通片段,还是一个交给脚本然后返回XSLT/XPath的片段

执行node.parentNode.parentNode.parentNode.parentNode时失败,当返回节点时,它只提供节点文本而不提供节点。您需要准确地告诉我们您使用的XSLT处理器。您确定您正在执行user:getDetailthis而不是user:getDetail。?user:GetDetails这将尝试选择上下文节点的所有这些元素子元素,然后将它们传递给扩展脚本函数。为什么需要使用脚本来选择一些父节点和属性?您可以在纯XSLT/XPath中完成所有这些。我还尝试在屏幕上返回节点和打印,输出显示的是简单的节点文本,而不是XML节点。考虑一下告诉我们,您使用的XSLT处理器是用MSXML在伊江内部的哪个处理器?然后发布一个最小但完整的样本,让我们重现问题。当然,到目前为止,我仍然认为纯XSLT/XPath加上例如就足够了。XPath允许您在树中导航,我不会尝试使用专有的方法,比如调用脚本来简单地选择节点。我仍然可以在屏幕上看到节点文本。如果XML中包含一个…

,并将其复制到输出中,那么原因浏览器也会显示p元素的内容,而不是它的标记。books元素也是如此,即假定您希望返回并呈现元素,而不是显示它们的标记。如果要将输入XML序列化为一个标记字符串,请使用以下解决方案:我想使用selectSingleNode获取qty属性的值。返回节点。选择SingleNodeBooks/book/qty/@value
function getDetail( node){
var idpl=1;
var idmt=2;
var kian=7

var racine = node.parentNode.parentNode.parentNode;
var nmois = racine.selectSingleNode( "root/pl/user[../../@id = '"+idpl+"' and ../@id = '"+idmt+"' and @id = '"+idmois+"' and @ki = '"+kian+"']");
return  nmois.getAttribute('ord')               
}
<?xml version="1.0" ?>
<?xml-stylesheet href="doc.xsl" type="text/xsl"?>
<books>
<book>
<name>Revolution</name>
<qty value="4">1</qty>
</book>
<book>
<name>Life of a pie</name>
<qty value="4">5</qty>
</book>
</books>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:user="com.nitish">
<msxsl:script language="javascript" implements-prefix="user" >
function getNode(node){

return node;

}
</msxsl:script>

<xsl:template match="/">


<html>
<body>
<h2>Book Details</h2>
<table xmlns:h="http://www.w3.org/TR/html4/" border="1px" cellspacing="20px">
<xsl:variable name="rootNode" select="books"/>
<xsl:for-each select="//book">
<tr><td><xsl:value-of select="user:getNode($rootNode)"/>
</td></tr>
</xsl:for-each>
</table>
</body>
</html>

</xsl:template>

</xsl:stylesheet>