|
Subject: Re: [xsl] How to create xsl:key that has a composite value in its "use" attribute? From: "Wendell Piez wapiez@xxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Sat, 15 Mar 2025 19:49:20 -0000 |
Dimitre,
Where you have
key('kBoundaryForNav', key('kNavForAirport', ARPT_IDENT)/(NAV_IDENT ||
'+' || NAV_CTRY || '+' || NAV_TYPE))/BDRY_IDENT
could not this be
key('kNavForAirport', ARPT_IDENT) / key('kBoundaryForNav', (NAV_IDENT ||
'+' || NAV_CTRY || '+' || NAV_TYPE) ) / BDRY_IDENT
which is perhaps a little more intelligible? (Apologies if I am wrong in
detail, I haven't tested.)
Keeping in mind that calls on key() can be strung together since XSLT 1.0
(IIRC). In other words, this might be worth a try in Saxon 6.5 with the
concat() adjustment as you suggest.
Cheers, Wendell
On Sat, Mar 15, 2025 at 1:51b/PM Dimitre Novatchev dnovatchev@xxxxxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
> I would use even this (can be XSLT 2.0 if || is done using concat() ):
>
> <xsl:stylesheet version="3.0" xmlns:xsl="
> http://www.w3.org/1999/XSL/Transform">
> <xsl:output omit-xml-declaration="yes" indent="yes"/>
> <xsl:key name="kNavForAirport" match="ANAV/row" use="ARPT_IDENT"/>
> <xsl:key name="kBoundaryForNav" match="BDRY/row" use="NAV_IDENT || '+' ||
> NAV_CTRY || '+' || NAV_TYPE"/>
>
> <xsl:template match="/*">
> <New-Document>
> <airports>
> <xsl:apply-templates select="ARPT/ARPT/row"/>
> </airports>
> </New-Document>
> </xsl:template>
>
> <xsl:template match="ARPT/ARPT/row">
> <airport>
> <ARPT_IDENT><xsl:value-of select="ARPT_IDENT"/></ARPT_IDENT>
> <fir>
> <xsl:copy-of select="key('kBoundaryForNav', key('kNavForAirport',
> ARPT_IDENT)/(NAV_IDENT || '+' || NAV_CTRY || '+' ||
NAV_TYPE))/BDRY_IDENT"/>
> </fir>
> </airport>
> </xsl:template>
> </xsl:stylesheet>
>
> On Sat, Mar 15, 2025 at 9:27b/AM Martin Honnen martin.honnen@xxxxxx <
> xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
>>
>> On 15/03/2025 17:19, Roger L Costello costello@xxxxxxxxx wrote:
>> > <xsl:template match="ARPT/ARPT/row">
>> >
>> > <result>
>> >
>> > <xsl:for-each select="key('ARPT-to-ANAV', ARPT_IDENT)">
>> >
>> > <xsl:sequence
>> select="key('ANAV-to-BDRY',(NAV_IDENT,NAV_CTRY,NAV_TYPE))[TYPE eq
>> '08']/BDRY_IDENT"/>
>> >
>> > </xsl:for-each>
>> >
>> > </result>
>> >
>> > </xsl:template>
>>
>>
>> That could be written as
>>
>> <xsl:template match="ARPT/ARPT/row">
>>
>> <result>
>>
>> <xsl:sequence select="key('ARPT-to-ANAV', ARPT_IDENT) !
>> key('ANAV-to-BDRY',(NAV_IDENT,NAV_CTRY,NAV_TYPE))[TYPE eq
>> '08']/BDRY_IDENT"/>
>>
>> </result>
>>
>> </xsl:template>
>>
>> I would think.
>>
>>
>>
>
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/174322> (by
> email <>)
>
--
...Wendell Piez... ...wendell -at- nist -dot- gov...
...wendellpiez.com... ...pellucidliterature.org... ...pausepress.org...
...github.com/wendellpiez... ...gitlab.coko.foundation/wendell...
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] How to create xsl:key tha, Dimitre Novatchev dn | Thread | Re: [xsl] How to create xsl:key tha, Dimitre Novatchev dn |
| Re: [xsl] How to create xsl:key tha, Dimitre Novatchev dn | Date | Re: [xsl] How to create xsl:key tha, Dimitre Novatchev dn |
| Month |