If you want the path to the context node from the document root, there's this handy path() function which includes position values.
If that's not what you want I'm confused.
-- Graydon
Hi Rob,
maybe you think of something like the following function:
declare function local:getInfo(
$anyelement as item()
){
if ($anyelement instance of element()) then
string-join(
for $e in $anyelement/ancestor-or-self::*
return
if (exists($e/@*)) then
concat(
name($e),
string-join(
for $attr in $e/@*
return
"[@" || $attr/name() || "=" || '''' || $attr/string() || '''' || "]",
''
)
)
else if ($e/preceding-sibling::*[name(.) = name($e)]) then
let $pos := count($e/preceding-sibling::*[name(.) = name($e)]) + 1
return
name($e) || "[" || $pos || "]"
else if ($e/following-sibling::*[name(.) = name($e)]) then
name($e) || "[1]"
else
name($e),
'/'
)
else ()
};
Christoph
Am 17.05.2016 um 15:51 schrieb Rob Stapper:
Hi Chistian,
In order to get some path to the element that is being processed I hoped that the following statement [ 1] would return a sequence of positions of each node amongst its siblings.
Unfortunately it only returns a bunch of: 1.
[ 1] $element/ancestor-or-self::* ! ./fn:position()
Should this work?
Is there some other ;-) clever way to retrieve a path to a random element that is being processed?
TIA for your reply,
Rob Stapper