AW: [xsl] OR expr with node sets

Subject: AW: [xsl] 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: [xsl] 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

Current Thread