Subject: AW: OR expr with node sets
From: "Lensch, Thomas" <Lensch@xxxxxxxx>
Date: Tue, 18 Oct 2005 12:39:42 +0200
|
Hi,
now i've found the problem causing the error. The error's cause isn't the
xsl:if (in fact both "foo or bar" and "foo | bar" works!), but one of the
following statements where i tried to union
"dok/zonen/textsuche/jpk/jpk-titel/div/normfassungen |
dok/notindexed/jpk/jpk-titel" in a template-parameter. Clearly, this doesn't
work in the called template.
But i must say XALAN's error messages are sometimes very awful and don't lead
to the bug's cause.
Thanks for your suggestions. They lead me to find the bug.
Regards,
Thomas.
-----Urspr|ngliche Nachricht-----
Von: Jarno.Elovirta@xxxxxxxxx [mailto:Jarno.Elovirta@xxxxxxxxx]
Gesendet: Dienstag, 18. Oktober 2005 11:50
An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Betreff: RE: OR expr with node sets
Hi,
> > The above uses an union expression, not an or expression.
> There's a difference.
> >
> > <xsl:if test="foo | bar">
> >
> > collects two node-sets, creates an union and then casts the
> combined node-set to a boolean.
> >
> > <xsl:if test="foo or bar">
> >
> > collects two node-sets, casts both of them into booleans
> and then makes an OR comparison between the resulting booleans.
> >
>
> That's true according to the way things are specified, although the
> end result is always the same so an actual implementation may well do
> the same thing in both those cases (and in both cases not generate the
> whole set, but stop looking as soon as it finds any node, as it knows
> that it is in a boolean context).
Naturally, could have specified that "a naive implementation following the
spec... ", but I wanted to highlight that "|" is not an OR operator. Xalan
throwing an exception in the case the original poster described is clearly
wrong, can't say why it fails, though.
Cheers,
Jarno
--
Kevin Energy: DJ Kevin Energy + MC Sharkey @ Enchanted Australia
|