寻找解决方案,具体如下: 这是我的javascript函数,它为我的xsl文件设置一个参数,这个参数包含一个带有xpath syntx的字符串查询
queryFilter = "*/person[name='John']";
function getXSLDoc(xslDocument,xmlDocument,queryFilter) {
..
var processor = new XSLTProcessor();
processor.setParameter(null,"name",queryFilter);
....
}
现在在我的xslt文件中,我想获取queryFilter字符串并在循环中使用它或创建一个变量:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="html" indent="yes"/>
<xsl:param name="queryFilter"/>
<!-- Lets say I want to create a local variable and use it to loop on a node -->
<xsl:variable name="varFilter" select="$queryFilter"/>
<xsl:for-each select="$**varFilter**">
<tr>
<xsl:apply-templates select="name"/>
..
</tr>
</xsl:for-each>
</xsl:stylesheet>
现在我如何使用我在javascript函数上设置的param作为xpath表达式?
答案 0 :(得分:1)
不支持在运行时动态评估完整的XPath表达式。但在许多情况下,传递一个数字或字符串值就足够了,例如。
name = "John";
和
processor.setParameter(null,"name",name);
然后在XSLT中你有
<xsl:param name="name"/>
和
<xsl:for-each select="*/person[name = $name]">...</xsl:for-each>