Of course—I should have been able to remember that, although it is not exactly 
obvious.

Thanks for the function—that definitely makes it clearer what the intent is.

Cheers,

Eliot

_____________________________________________
Eliot Kimber
Sr Staff Content Engineer
O: 512 554 9368
M: 512 554 9368
servicenow.com<https://www.servicenow.com>
LinkedIn<https://www.linkedin.com/company/servicenow> | 
Twitter<https://twitter.com/servicenow> | 
YouTube<https://www.youtube.com/user/servicenowinc> | 
Facebook<https://www.facebook.com/servicenow>

From: BaseX-Talk <basex-talk-boun...@mailman.uni-konstanz.de> on behalf of 
Christian Grün <christian.gr...@gmail.com>
Date: Monday, July 4, 2022 at 10:35 AM
To: Martin Honnen <martin.hon...@gmx.de>
Cc: BaseX <basex-talk@mailman.uni-konstanz.de>
Subject: Re: [basex-talk] How To: Sort nodes in document order?
[External Email]


Hi Eliot,

As a generalized solution (for an arbitrary number of inputs), you can
attach a self::node() step (or a simple context item expression "."):

  ($nodes1, $nodes2, $nodes2)/self::node()

The resulting expression will be evaluated as path, and the result
will be brought into distinct document order. We’ve added a function
for that to make the clean/sort operation more explicit [1].

Cheers,
Christian

[1] 
https://urldefense.com/v3/__https://docs.basex.org/wiki/Utility_Module*util:ddo__;Iw!!N4vogdjhuJM!EpBmorLdRqwgF_sFWHiKISiLZoezQRaMuvHbjb0H5zBgTHux9qEmOLss_rHLFMCGkB5eyfVsQ4ryZG6Jhlwdsqbk09MtVVo$<https://urldefense.com/v3/__https:/docs.basex.org/wiki/Utility_Module*util:ddo__;Iw!!N4vogdjhuJM!EpBmorLdRqwgF_sFWHiKISiLZoezQRaMuvHbjb0H5zBgTHux9qEmOLss_rHLFMCGkB5eyfVsQ4ryZG6Jhlwdsqbk09MtVVo$>



On Mon, Jul 4, 2022 at 5:29 PM Martin Honnen <martin.hon...@gmx.de> wrote:
>
>
> Am 04.07.2022 um 17:14 schrieb Martin Honnen:
>
>
> Am 04.07.2022 um 17:11 schrieb Eliot Kimber:
>
> I feel like I should know how to do this (and possibly I’ve previously been 
> told how and have forgotten), but I’m at a loss.
>
>
>
> I am implementing a process that gathers nodes from a single document (a DITA 
> map) and constructs a system of maps where I’m using the maps primarily to 
> represent a tree and enable lookup of things by key.
>
>
>
> However, the order of the elements that make up these maps is also important 
> (DITA’s rules for how you build DITA key spaces from maps depends entirely on 
> document order).
>
>
>
> For example, I have a map that maps “key names” to the elements that declare 
> those key names, i.e.:
>
>
>
> map { “key-01” : (<topicref keys=”key-01” href=”foo.dita”/>, <topicref 
> keys=”key-01” href=”bar.dita”/>) }
>
>
>
> This is the initial state of the map (reflecting pass 1 over the DITA map 
> document) but then I need to add additional elements to the sequence that is 
> the value of entry “key-01” and I need the resulting sequence to be in 
> document order.
>
>
>
> So my question: given two sequences of nodes from the same document, how does 
> one construct a new sequence where the nodes are in document order?
>
>
>
>
> $seq1 | $seq2 should do, if you want duplicates eliminated.
>
>
> Otherwise perhaps
>
>
> sort(($seq1, $seq2), (), function($n) { index-of(($seq1 | 
> $seq2)!generate-id(), generate-id($n))})
>
>
>

Reply via email to