The XPath 2.0 data model does not allow sequences of sequences, so there's no
obvious way to represent a sequence of pairs -- except as an XML tree, of
course.
In XPath 3.1 you can return an array. Actually you can return an array of
arrays, an array of sequences, or a sequence of arrays. For example to return
a sequence of arrays write
> for $i in //Observation return [data($i/Target-Latitude),
data($i/Target-Longitude)]
Michael Kay
Saxonica
> On 17 Jan 2023, at 20:08, Roger L Costello costello@xxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> Hi Folks,
>
> I have this XML document:
>
> <Track-History>
> <Track-ID>XYZ</Track-ID>
> <Observation>
> <Target-Latitude>10</Target-Latitude>
> <Target-Longitude>20</Target-Longitude>
> <Observer-Latitude>40</Observer-Latitude>
> <Observer-Longitude>50</Observer-Longitude>
> </Observation>
> <Observation>
> <Target-Latitude>15</Target-Latitude>
> <Target-Longitude>25</Target-Longitude>
> <Observer-Latitude>40</Observer-Latitude>
> <Observer-Longitude>50</Observer-Longitude>
> </Observation>
> </Track-History>
>
> I want an XPath expression that returns a sequence of (Target-Latitude,
Target-Longitude) pairs; i.e., a pair for each <Observation> element. For the
XML document shown above, the XPath should return this sequence:
>
> (10,20), (15,25)
>
> A count of the number of items in the sequence should yield: 2
>
> The following XPath is not correct:
>
> for $i in //Observation return ($i/Target-Latitude, $i/Target-Longitude)
>
> A count of the number of items returned by that XPath yields: 4
>
> Is there an XPath to do what I seek?
>
> /Roger
|