1

我们在 Java 中使用 Xalan XSLT 1.0,我们希望将变量传递给模板匹配以避免在 XSL 文件中硬编码元素名称。样式表编译,但返回的日期错误。我们是否使用正确的语法?

可能的 XML 输入...

 <books>   
    <book/>
    <book/>
 </books>

 <dvds>
     <dvd/>
     <dvd/>
 </dvds>


<xsl:variable name="matchElement" select="'book'"/>
<!-- OR -->
<xsl:variable name="matchElement" select="'dvd'"/>

<xsl:template match="/*[local-name() = $matchElement]">  
4

2 回答 2

2

xsl:template

<xsl:template match="/*[local-name() = $matchElement]"> 

从根匹配。

删除/from/*或将其更改为//*(取决于样式表其余部分的设计方式)。

此外,如果您使用xsl:param而不是xsl:variable,您可以从命令行设置值。

于 2011-11-07T20:29:51.223 回答
2

您的变量语法是正确的,但请注意,在 XSLT 1.0 匹配模式中使用变量或参数引用在技术上是非法的。然而,Xalan 有可能在标准之外实现了这种行为。(@DevNull 对您的表达的评论也适用。)

于 2011-11-07T21:43:56.870 回答