Subject: Re: [xsl] better way to get the path to a node? From: Graydon <graydon@xxxxxxxxx> Date: Sat, 1 Dec 2012 08:43:24 -0500 |
On Sat, Dec 01, 2012 at 12:05:47PM +0000, David Carlisle scripsit: > On 01/12/2012 02:52, Graydon wrote: > >[do better than, getting the path] > ><xsl:sequence > >select="string-join(ancestor-or-self::*/concat('/',name(),'[',for $x in . return count(preceding-sibling::*[name() eq $x/name()])+1,']'),'')"/> > > As has been mentioned, saxon has an extension for this if you have > saxon extensions. Which I do, but didn't know; thank you! (I've been trying to avoid processor-specific extensions, but speed beats almost everything else in this particular case.) > For XSLT implementations, the schematron sources have several > versions depending on the use case. Good to know, thank you! > Using name() as you have it makes for a more human readable path but > relies on the namespace prefixes in the current source being the > same as in the context where the xpath will be evaluated, which > isn't always the case. All true. This is a case where the namespace context is fixed (I'm producing reports on a big pile of XML documentation, which stays in the default namespace) and where human-readability is paramount -- people may have to evaluate parts of the report -- so the human readable path is desired. > Simpler and avoiding namespace woes is to generate > > /*[1]/*[2]/*[23] > > ie just count elements without regard for name, This works of course > but doesn't give a human reader of the xpath much of a clue what was > being identified. Yeah, and I very much need the human reader to be able to go find the file in question and plug the XPath into a search bar and get the right element. So human-readable is required and saxon:path() is likely the best choice. Thanks! Graydon
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] better way to get the pat, David Carlisle | Thread | Re: [xsl] better way to get the pat, Liam R E Quin |
Re: [xsl] better way to get the pat, David Carlisle | Date | Re: [xsl] better way to get the pat, Graydon |
Month |