无法在xsl脚本中传递XML

时间:2014-11-06 10:11:22

标签: javascript xml xslt client-side

下面是XML和XSL,我想将完整的xml节点传递给xsl脚本,以便在该节点上执行某些操作,我不想使用XPATH,并希望在msxslscript中使用chooseinglenode进行操作。

XML

<?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>

XSL

<?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.selectSingleNode("books/book/qty/@value");

}
</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>

请帮忙。

1 个答案:

答案 0 :(得分:0)

我不明白为什么你坚持使用像扩展脚本这样的专有功能来简单地选择节点并输出它们的值,因为这是XSLT和XPath的用途,但是如果你需要一个例子,那么使用IE以下的工作对我来说:

<?xml-stylesheet type="text/xsl" href="test2014110601.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="UTF-8"?>
<xsl:stylesheet version="1.0"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:user="http://example/com/user"
  exclude-result-prefixes="msxsl user">

<msxsl:script language="javascript" implements-prefix="user">
function getNode(nodeSelection) {
  return nodeSelection.item(0).selectSingleNode("book/qty/@value");
}
</msxsl:script>

<xsl:output method="html" indent="yes" version="4.01"/>

<xsl:template match="/">
  <xsl:variable name="rootElement" select="books"/>
  <html>
    <body>
      <h2>Book Details</h2>
      <div>
        <h3>XPath</h3>
        <xsl:value-of select="$rootElement/book/qty/@value"/>
      </div>
      <div>
        <h3>Script</h3>
        <xsl:value-of select="user:getNode($rootElement)"/>
      </div>
    </body>
  </html>
</xsl:template>

</xsl:stylesheet>

http://home.arcor.de/martin.honnen/xslt/test2014110601.xml在线。 IE输出

Book Details


XPath
4

Script
4