我正在尝试使用xsl:param
来对属性进行模板匹配。通过我在这里和互联网上发现的一切,我正确地做到了这一点。但是,我的输出是空白的。
这是我的xslt
<xsl:param name="strm_name">main</xsl:param>
<xsl:template match="stream[@name='{$strm_name}']"></xsl:template>
如果我将参数调用硬编码为“main”,这就可以了 这是我想要匹配的XML标签..
<doc><stream name="main"></stream></doc>
非常感谢任何帮助!
答案 0 :(得分:0)
我看到两个问题:
'{...}'
。 (您可能会将此与属性值模板混淆。)请改用:stream[@name=$strm_name]
问题#1的可能解决方法是仅选择那些符合您的参数控制的条件的元素。 (你可以引用select表达式中的param)。
例如,这个样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:param name="strm_name" select="'main'"/>
<xsl:template match="/">
<xsl:apply-templates select="/*/stream[@name=$strm_name]" />
</xsl:template>
<xsl:template match="stream">
<xsl:apply-templates />
<xsl:text>/</xsl:text>
</xsl:template>
</xsl:stylesheet>
适用于本文件:
<root>
<stream name="main">1</stream>
<stream name="other">2</stream>
<stream name="main">3</stream>
<stream name="main">4</stream>
<stream name="other">5</stream>
<stream name="other">6</stream>
</root>
...仅匹配所需的节点。输出:
1/3/4/