RE: [xsl] Selecting the first node set

Subject: RE: [xsl] Selecting the first node set
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Tue, 15 Aug 2006 10:31:59 -0400
At 01:00 PM 8/14/2006, Mike wrote:
> One has to be willing to think with the
> literal-mindedness of a machine to tell the difference
> between /descendant-or-self::node()/child::Value[1] and
> (/descendant-or-self::node()/child::Value)[1], and that can
> take a bit of practice.

Yes. I'm not sure why people struggle with this though. It seems intuitive
enough that

x | y[1]

doesn't mean the same as

(x | y)[1]

so why is the "/" perceived so differently from the "|"? Is it that people
are somehow aware that it's a higher-order operator and therefore imagine it
doesn't obey normal precedence rules? Or is it the overloading of [], which
in its other role as a boolean filter is associative with "/"?

Possibly all of the above, and more, but none of it in specific. I think it's really a case of brain overloading. When faced with what appear to be complex expressions that remind them of middle-school examinations, people's anxiety levels rise and their neural pathways tighten up, leading to a negative-feedback-loop-driven brain shutdown and a reversion to what "ought" to be. Some people learn to relax, slow down and let the channels open, or they have learned from practice not to be scared by mathematics, or they were never scared in the first place.

It's a fascinating thing to observe. As a teacher, I try to convey that all this persnicketiness is not only necessary (to understand the machine, which doesn't suffer from anxiety), but it can be fun, not scary, and that no one's hand will be slapped. (Of course, that runs the risk of me being classed as the Other, at which point teaching becomes even more of a challenge. :-)

But you've given me an idea. Maybe our poor school-scarred students would be helped by examining

/ descendant-or-self::node() / child:element[1]

as a gloss on //element[1]

Thanks again Mike.


Michael Kay

Current Thread