Subject: Re: [xsl] Getting previous node in nodeset From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Fri, 22 Apr 2011 06:42:08 -0700 |
And, of course, a solution which doesn't use subsequence() : for $i in (1 to count($nodelist)) return $nodelist[$i][$nodelist[$i +1] is $mynode] -- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence. --------------------------------------- To invent, you need a good imagination and a pile of junk ------------------------------------- Never fight an inanimate object ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play ------------------------------------- Facts do not cease to exist because they are ignored. On Fri, Apr 22, 2011 at 3:18 AM, Oliver Hallam <oliver@xxxxxxxxxxx> wrote: > A slightly neater formulation of this is > > $nodelist[subsequence($nodelist,position() + 1,1) is $mynode] > > If you know your nodelist is in document order, then the following would > also work: > > $nodelist[. << $mynode][last()] > > > > Oliver Hallam > > > On 22/04/2011 10:21, Michael Kay wrote: >> >> On 22/04/2011 08:24, David Carlisle wrote: >>> >>> On 22/04/2011 02:28, Steve Fogel wrote: >>>> >>>> Hi, all... >>>> >>>> Would appreciate a suggestion: >>>> >>>> If: >>>> >>>> - I have a node set in the variable $nodelist >>>> - and I have a single node in the variable $mynode >>>> - and the node in $mynode is a member of $nodelist >>>> >>>> then in XSLT 2.0, how do I set a variable to contain the node that is >>>> previous to $mynode in $nodelist? >>>> >>>> For simplicity and a quick answer, you can assume that all nodes in >>>> $nodelist are siblings, but in reality, $nodelist contains<topicref>s from a >>>> DITA map, so the previous node could be a sibling, a parent, or the child of >>>> the previous sibling. >>>> >>>> Many thanks >>>> >>>> >>> >> >> If I had this problem, I think I would want to take a step back: where do >> these two variables come from? Is there any possibility that instead of >> setting the variable $mynode to be one of the nodes in $nodelist, one could >> set a variable $myNodePosition to be the integer position of $mynode in >> $nodelist? >> >> However, for the problem as stated, another option is >> >> $nodelist[(1 to count($nodelist))[subsequence($nodelist, ., 1) is $mynode] >> - 1] >> >> In 3.0 this is a classic case for some useful higher-order functions. >> >> Michael Kay >> Saxonica
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Getting previous node in , Oliver Hallam | Thread | Re: [xsl] Getting previous node in , David Carlisle |
Re: [xsl] Getting previous node in , Oliver Hallam | Date | [xsl] XPath expression for checking, Costello, Roger L. |
Month |