[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Anyone can explain me this syntax?

Subject: Re: Anyone can explain me this syntax?
From: David Carlisle <davidc@xxxxxxxxx>
Date: Tue, 13 Jan 2004 15:38:55 GMT
xsl string equality
this is explained in jeni's pages on grouping but basically

> Why the . (dot) is used? 

. is the current node as always in xpath

>  What's the meaning of the | (pipe)?

| is set union select="a|b" selects all nodes called a and all nodes
  called b and returns the union of those sets (which means, it can
  often be read as "or") select="a|b" selects all elements called a or
  b.

> - What's the meaning of [1]? 
if a predicate is numeric it is tests the value of position()

select="a[3]"
selects the third a child of the current node.

> I tried by using [2] and it worked too... or, perhaps I was lucky?
[2] wouldn't work in general, that would select the second item of each
group rather than the first, and in particular if a group only had one
item you would get nothing.

You want to test if the current node is the first item of the group
in XPath 2 draft that is

 . is key('relacion_x_cobertura', REL_ID)[1]

but Xpath 1 does not have the "is" operator or any other direct way to
test node identity so you can use either one of two methods

testing generated ids:

generate-id(.) = generate-id(key('relacion_x_cobertura', REL_ID)[1])

this does a string equality test of the generated ids, which will be
equal only if they are the same node

or you can do the test you had

count(. | key('relacion_x_cobertura', REL_ID)[1]) = 1

. | key('relacion_x_cobertura', REL_ID)

is the union of the two nodes . and key('relacion_x_cobertura',
REL_ID)[1], so eiether these nodes are different and so this set has two
elements or they are the same in which case the set will have one
element (so count(....) =1.
(Note this test relies on the fact that in this context you know that
there is some element with key('relacion_x_cobertura', REL_ID) as 
in general you need to check that the  key('relacion_x_cobertura',
REL_ID) is non-empty, as if that is the empty set the union with . would
again only have one element in it.

David


-- 
http://www.dcarlisle.demon.co.uk/matthew

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.