[xsl] Re: XPath expression that returns a sequence of pairs?

Subject: [xsl] Re: XPath expression that returns a sequence of pairs?
From: "Chris Papademetrious christopher.papademetrious@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 17 Jan 2023 20:12:59 -0000
Hi Roger,

I think sequences are always flattened, and so you would need arrays to do
this (XSLT 3.0, XPath 3.1). Arrays can contain anything, including other
arrays:

https://www.saxonica.com/documentation12/#!expressions/xpath31arrays

I've never used arrays, so I can't suggest code to try.

 - Chris

-----Original Message-----
From: Roger L Costello costello@xxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Tuesday, January 17, 2023 3:08 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: [xsl] XPath expression that returns a sequence of pairs?

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

Current Thread