我正在一个执行一些xslt转换的java应用程序。 我想使用java提供的参数将节点匹配到xslt文档中。 这是做正确的事情的正确方法:
<xsl:template match="//m:properties/*[contains($pattern,name())]">
因为当我启动我的应用程序时,它声称它无法编译样式表,因为模式未定义但我使用setParameter方法设置它并且我能够使用以相同方式定义的另一个参数但是不同的背景。 提前致谢 费尔
答案 0 :(得分:1)
你需要一个
<xsl:param name="pattern" />
在样式表中声明参数,setParameter
调用本身就不够了。但是,根据XSLT 1.0规范,还有一个问题是,匹配表达式不允许包含$pattern
之类的变量/参数引用。有些处理器确实允许它们(包括至少某些版本的Xalan),但是如果它不起作用则需要更改匹配逻辑,例如:通过定义模板以匹配//m:properties/*
,然后仅针对与您的模式匹配的元素调用apply-templates
。