将param作为xpath表达式传递给XSLT-javascript

时间:2013-12-09 02:42:57

标签: javascript xslt xpath

寻找解决方案,具体如下: 这是我的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表达式?

1 个答案:

答案 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>