次の方法で、いくつかの可能なパスをテンプレートに一致させようとしている状況があります。
<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要素を使用することはできません。