【发布时间】:2017-11-14 08:12:43
【问题描述】:
有些关于 XSL 匹配规则的问题我无法获得。
我有这个输入:
<root>
<metadata>
</metadata>
<elements>
<a-elems>
<a>A1</a>
<a>A2</a>
</a-elems>
<b-elems>
<b>B1</b>
<b>B2</b>
</b-elems>
</elements>
</root>
这个 XSL 可以按我的意愿工作,报告了 <a> 值的列表:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:template match = "/">
_____ Elements _____
<xsl:apply-templates select = "root/elements/*/*" />
</xsl:template>
<xsl:template match = "a-elems/a">
__ A ELEM: <xsl:value-of select = "."></xsl:value-of> __
</xsl:template>
<xsl:template match="*">
<xsl:message>Excluding <xsl:value-of select = "name(.)" /></xsl:message>
</xsl:template>
</xsl:stylesheet>
但是,我认为这个根模板(我在其中声明了我想从哪个级别开始)会更简洁:
<xsl:template match = "/root/elements">
_____ Elements _____
<xsl:apply-templates select = "*/*" />
</xsl:template>
但它不起作用,我收到“排除根”消息,并且我知道模板永远不会匹配。我不明白为什么,我也尝试过 select = "*" 并添加优先级属性。
【问题讨论】:
标签: xslt