Subject: RE: How to specify document order location path for identical elements with different parents?
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Fri, 2 Apr 2004 21:29:39 +0100
|
> -----Original Message-----
> From: Alan Stein [mailto:as@xxxxxxxxxxx]
> Sent: 02 April 2004 19:38
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: How to specify document order location path
> for identical elements with different parents?
>
> Thanks much for the help with my previous posting.
>
> I think I've better articulated my question in the following example:
>
> Given the following XML:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <reportlist>
> <report>
> <codelist>
> <code type="a"/>
> </codelist>
> <codelist>
> <code type="b"/>
> <code type="c"/>
> </codelist>
> </report>
> <report>
> <codelist>
> <code type="a"/>
> <code type="b"/>
> </codelist>
> <codelist>
> <code type="a"/>
> </codelist>
> </report>
> <report>
> <codelist>
> <code type="z"/>
> <code type="a"/>
> <code type="d"/>
> </codelist>
> </report>
> <report>
> <codelist>
> <code type="a"/>
> <code type="e"/>
> <code type="f"/>
> </codelist>
> </report>
> <report>
> <codelist>
> <code type="e"/>
> </codelist>
> </report>
> </reportlist>
>
>
> How do I perform the following queries?
>
> 1) What is the number of reports which are coded with either
> an "a" or
> "b" where the last "a" or "b" code of the report (in document
> order) is
> an "a"?
>
> (correct number is 3. Yes, this has been double checked.)
count(report[(.//code[@type="a" or @type="b")][last()][@type="a"]])
>
>
> 2) What is the number of reports which are coded with either
> an "a" or
> "b" where the last "a" or "b" code of the report (in document
> order) is
> a "b".
>
> (correct number is 1. Yes, this has been double-checked.)
count(report[(.//code[@type="a" or @type="b")][last()][@type="b"]])
Not tested.
Michael Kay
|