Re: How to generate a path expression which shows the namespace that each element on the path belongs to and the namespace that each namespace prefix is bound to?

"Michael Kay [email protected]" <[email protected]> Fri, 5 Feb 2021 16:54:22 -0000
Newsgroups gmane.text.xml.xsl.general.mulberrytech
Message-ID <[email protected]>
Use the fn:path() function in XPath 3.x.

Michael Kay
Saxonica

> On 5 Feb 2021, at 16:36, Roger L Costello [email protected] <[email protected]> wrote:
> 
> Hi Folks,
> 
> I have an XHTML document. Here is an example:
> 
> <html xmlns:o="urn:schemas-microsoft-com:office:office" 
>           xmlns="http://www.w3.org/TR/REC-html40">
>    <head>
>        <title>Example</title>
>    </head>
>    <body>
>        <p>
>            <o:p></o:p>
>        </p>
>    </body>
> </html>
> 
> I want to show the path to each element. I can iterate over all nodes and use ancestor-or-self along with string-join to show the path:
> 
> <xsl:for-each select="//*">
>    <xsl:value-of select="string-join(for $i in (ancestor-or-self::*) return name($i), '/')"/>
> </xsl:for-each>
> 
> Here is one of the paths that is generated:
> 
> html/body/p/o:p
> 
> Unfortunately, that path expression is missing crucial information:
> 
> - html, body, p are in the http://www.w3.org/TR/REC-html40 namespace
> - the "o" prefix is bound to the urn:schemas-microsoft-com:office:office namespace
> 
> It is vital that I have that information because I want to generate XHTML instances from the path expressions. For example, for the above path expression I will generate:
> 
> <html xmlns="http://www.w3.org/TR/REC-html40"
>           xmlns:o="urn:schemas-microsoft-com:office:office">
>    <body>
>        <p>
>            <o:p></o:p>
>        </p>
>    </body>
> </html>
> 
> How to generate a path expression which shows the namespace that each element on the path belongs to and the namespace that each namespace prefix is bound to?
> 
> /Roger
> 
> 
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/3329386
or by email: [email protected]
--~--