xsl-list
[Top] [All Lists]

Re: [xsl] Sorting a sequence and selecting the first element after sort

2015-05-08 07:06:37
You could also use the union operator, or its short form |, as in
(foo | *[descendant::foo | descendant::bar])[1]

In contrast to the sequence operator (the comma), it will eliminate
duplicates and return its results in document order.

Gerrit

On 08.05.2015 13:57, Jorge . chocolate(_dot_)camera(_at_)gmail(_dot_)com wrote:
I answer both questions to myself:

    <xsl:sequence="*[local-name() eq 'foo' or descendant::foo or
descendant::bar][1]"/>

(unless I got something wrong again).

Please, excuse me for the noise.

On Fri, May 8, 2015 at 1:50 PM, Jorge . 
chocolate(_dot_)camera(_at_)gmail(_dot_)com
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
I now see that, on top of that, I am adding duplicate copies of nodes
that match both conditions to the sequence (-_-;). I would also
appreciate a hint on how to make that selection without dupes.

On Fri, May 8, 2015 at 1:44 PM, Jorge . 
chocolate(_dot_)camera(_at_)gmail(_dot_)com
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
I'd like to select the first child of the current node that either:

1.    is a "foo" element
2.    has "foo" or "bar" descendant(s)

The following sequence returns me all nodes matching either or both of
those conditions:

    <xsl:sequence select="foo, *[descendant::foo, descendant::bar]"/>

but not necessarily ordered according to their position as children of
the current node. As a result, the first element in that sequence,
selected like this:

    <xsl:sequence select="(foo, *[descendant::foo, descendant::bar])[1]"/>

is not necessarily the first matching child of the current node.

How do I sort elements in that sequence according to their position as
children of the current context, so that the first element in that
sequence is actually the first matching child in the current node?





-- 
Gerrit Imsieke
Geschäftsführer / Managing Director
le-tex publishing services GmbH
Weissenfelser Str. 84, 04229 Leipzig, Germany
Phone +49 341 355356 110, Fax +49 341 355356 510
gerrit(_dot_)imsieke(_at_)le-tex(_dot_)de, http://www.le-tex.de

Registergericht / Commercial Register: Amtsgericht Leipzig
Registernummer / Registration Number: HRB 24930

Geschäftsführer: Gerrit Imsieke, Svea Jelonek,
Thomas Schmidt, Dr. Reinhard Vöckler
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>