我正在尝试将xml节点传递给xsl脚本,但它无法将其识别为xml节点。 因此,在该节点上执行的任何操作都将失败,下面是我的代码示例
调用样式表
<xsl:value-of select="user:getDetail( this)"/>
xsl脚本
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和xsl
的示例<?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>
我希望输出是每个单元格中的XML而不是我只得到节点文本。 传递XML的方法是使用selectSingleNode和其他JS函数进行perfoem操作 因为节点不是xml所以它失败了。
答案 0 :(得分:0)
如果要将XML节点复制到结果树,那么使用XSLT则需要分别使用<xsl:copy-of select="$node"/>
<xsl:copy-of select="user:getNode($rootNode)"/>
。 xsl:value-of
始终使用所选节点的字符串值构造文本节点,它不会将节点本身复制到输出。这对于您拥有的任何节点或结果树片段都是相同的,无论是使用纯XSLT / XPath处理的“普通”片段,还是将其移交给脚本然后返回XSLT / XPath。