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

pass param as xpath expressin to XSLT- javascript

本文关键字:XSLT-javascript 表达式 param 作为 xpath      更新时间:2024-05-16

在以下方面寻找解决方案:这是我的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函数上设置的参数用作xpath表达式?

不支持在运行时动态评估完整的XPath表达式。但在许多情况下,只要输入一个数字或字符串值就足够了,您可以在比较中使用该值,例如

name = "John";

processor.setParameter(null,"name",name);

然后在XSLT中有

<xsl:param name="name"/> 

<xsl:for-each select="*/person[name = $name]">...</xsl:for-each>