我有一种情况,我试图通过以下方式将多个可能的路径匹配到模板:
<xsl:template match="blah">
<xsl:apply-templates select="foo/*/baz" mode="someMode"/>
</xsl:template>
<xsl:template match="*" mode="someMode">
<xsl:if test="current() != 'foo/bar/baz' and
current() ! ='foo/bam/baz'">
<!-- Process here -->
</xsl:if>
</xsl:template>
如您所见,“foo”下可以有任意数量的元素具有“baz”元素(例如,“bar”、“bam”、“bal”、“bav”等),但我知道大约只有 2 个,“bar”和“bam”。我不想处理这些,但我想处理其他的。不幸的是,current() 方法没有返回匹配的路径,所以测试总是成功的(即使路径是 'foo/bar/baz' 或 'foo/bam/baz'.
如何检索在 if-test 中匹配的路径?
请注意:我不能有其他专门匹配 'foo/bar/baz' 和 'foo/bam/baz' 的 xsl:template 元素,因为它们正在其他地方(以其他方式)进行处理。