That should have been ancestor::div1[1]. pardon the typo.

On Wed, Apr 16, 2014 at 3:21 PM, José Tomás Atria <jtat...@gmail.com> wrote:

> let $test :=
> element div0{
>   attribute id { 4 },
>   element div1 {
>     attribute id { 3 },
>     element div1 {
>       attribute id { 2 },
>       element para {
>          attribute id { 1 },
>         element child { }
>       }
>     }
>   }
> }
>
> I want to get the "smallest" div1 for a given child. this is, the <div1
> id=2> element.
>
> As far as I've understood the answers given here, reverse axes are ordered
> from the context node, so the expression
>
> $test//child/ancestor-or-self::div1[1] will get me what i want, while
> $test//child/parent() will give me <para id=1>
>
> Needless to say, my data is not particularly well behaved :)
>
> Thanks!
>
>
> On Wed, Apr 16, 2014 at 3:16 PM, David Rudel <fwqhg...@gmail.com> wrote:
>
>> I apologize if I'm being dense, but I don't understand how the nearest
>> ancestor can be anything other than the parent. Could you please give
>> an example?
>>
>> I just want to make sure I haven't sent you off with the wrong
>> expression for your intended usage.
>>
>> On Wed, Apr 16, 2014 at 8:48 PM, José Tomás Atria <jtat...@gmail.com>
>> wrote:
>> > Thank you all for your answers.
>> >
>> > I was just tryig to determine if $test/ancestor::element()[1] would be
>> the
>> > correct way of getting the nearest ancestor, as I couldn't find whether
>> axes
>> > were ordered or not in the xpath specification.
>> >
>> > Thanks!
>> >
>> > ps: Parent doesn't apply, because the relevant node is not always the
>> > parent, but the first node with a given name.
>> >
>> >
>> > On Wed, Apr 16, 2014 at 2:45 PM, David Rudel <fwqhg...@gmail.com>
>> wrote:
>> >>
>> >> Mr. Atria,
>> >> You left out a key element from the answer you got from stack overflow.
>> >>
>> >> Note that Dimitre's response used a filter expression
>> >> (path expression) [predicate]
>> >>
>> >> not a simple path expression
>> >>
>> >> The ()s are critical.
>> >>
>> >> $test//child/ancestor-or-self::test[ last() ]
>> >>
>> >> is very different from
>> >>
>> >> ($test//child/ancestor-or-self::test)[ last() ]
>> >>
>> >> The ancestor axis is a reverse axis, but when the xpath expression is
>> >> complete, the sequence of nodes are then put in document order
>> >> regardless of what order the last axis had.
>> >>
>> >> In any event, I don't understand what is wrong with simply
>> >> $test/ancestor::element()[1]
>> >>
>> >> Perhaps I don't understand your question (which is simpler than the
>> >> Stack Overflow question you linked to). But if you are just looking
>> >> for the nearest ancestor element, then it seems that
>> >> $test/ancestor::element()[1] should give it to you.
>> >
>> >
>> >
>> >
>> > --
>> > entia non sunt multiplicanda praeter necessitatem
>>
>>
>>
>> --
>>
>> "A false conclusion, once arrived at and widely accepted is not
>> dislodged easily, and the less it is understood, the more tenaciously
>> it is held." - Cantor's Law of Preservation of Ignorance.
>>
>
>
>
> --
> entia non sunt multiplicanda praeter necessitatem
>



-- 
entia non sunt multiplicanda praeter necessitatem

Reply via email to