[xsl] .[predicate] vs self::node()[predicate]- Xalan 2.7

Subject: [xsl] .[predicate] vs self::node()[predicate]- Xalan 2.7
From: Raimund Kammering <raimund.kammering@xxxxxxx>
Date: Wed, 17 Apr 2013 11:12:37 +0200
Hello,

I have a stylesheet which works correct if I use:

.[predicate]

but I get an warning/error from the transformer saying:

'..[predicate]' or '.[predicate]' is illegal syntax.  Use
'self::node()[predicate]' instead.
And this spams the (tomcat) log files that way that they get unusable!
Therefore I would like to get rid of this
warning/error message. BUT if I do as recommended and use
'self::node()[predicate], the transformation results
in no match?!

The transformer I use is Xalan Java 2.7.0. Is there an easy way to suppress
the warning/error, or to change the
statement to be legal (while producing the same matches).

Code looks something like this:
XML:
<sum>
  <tdownA>0.7</tdownA>
  <tdownB>0.1</tdownB>
</sum>

XSL:
<xsl:template match="entry/sum">
  ...
  <xsl:for-each select=".[starts-with(name,'tdown')]">
  ...
  </xsl:for-each>
  ...
</xsl:template>

(and YES I should/could change the template match condition to be
match="entry" and the for-each to be
select="sum[starts-with(name,'tdown')]", but this would break a lot other
surrounding logic, which I don't want
to touch!)

Any help would be appreciated!

Cheers,
Raimund

Current Thread