Re: [xsl] XPath expression which converts the output of path() into an abbreviated path?

Subject: Re: [xsl] XPath expression which converts the output of path() into an abbreviated path?
From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 17 Aug 2022 12:34:29 -0000
Am 17.08.2022 um 14:22 schrieb Roger L Costello costello@xxxxxxxxx:
Hi Folks,

I am using the path() function and it is generating paths like this:

/Q{}AeroPublication[1]/Q{}airports[1]/Q{}airport[1]/Q{}icaoCode[1]

Now I want to convert that full path into an abbreviated path, consisting of
just the last 3 names:

airports/airport/icaoCode


I can write a bunch of XSLT code that does this conversion. But is there an
XPath expression which does it?


Assuming we process only the result of path() it should be possible with tokenize and replace and string-join e.g.


string-join((('/Q{}AeroPublication[1]/Q{}airports[1]/Q{}airport[1]/Q{}icaoCod e[1]' => tokenize('/')) ! replace(., '^Q\{[^{]*\}|\[[0-9]+\]$', ''))[position() gt last() - 3], '/')

Current Thread