Re: [xsl] (simple?) xpath question

Subject: Re: [xsl] (simple?) xpath question
From: mark bordelon <markcbordelon@xxxxxxxxx>
Date: Fri, 29 Aug 2008 13:38:11 -0700 (PDT)
I'll do this and get back.


--- On Fri, 8/29/08, Evan Lenz <evan@xxxxxxxxxxxx> wrote:

> From: Evan Lenz <evan@xxxxxxxxxxxx>
> Subject: Re: [xsl] (simple?) xpath question
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Date: Friday, August 29, 2008, 1:32 PM
> You either need to post more details about the input XML, or
> contact 
> Altova support. Otherwise, it's pure speculation. The
> only thing I can 
> think of is that there's a namespace declaration at the
> top that you're 
> failing to take into account (e.g.,
> xmlns="http://example.com";). But 
> even then, the name() function should work if prefixes
> aren't being used.
> 
> Evan
> 
> mark bordelon wrote:
> > Evan,  (and everyone)
> >
> > Thanks for this great help.
> > I am seizing the xpath solution so far (keeping the
> xsl solution in the back of my mind as plan B)
> >
> > However, in Altova Spy neither
> > //*[self::a or self::c]
> > nor
> > //*[name() = 'a' or name() = 'c']
> >
> > is returning any results. Syntax is fine, just no
> results.
> >
> > This is the only tool I have for testing, other than
> writing code. Is there a configuration in Altova Spy I need
> to tweek?
> >
> > Mark
> >
> >
> > --- On Fri, 8/29/08, Evan Lenz
> <evan@xxxxxxxxxxxx> wrote:
> >
> >   
> >> From: Evan Lenz <evan@xxxxxxxxxxxx>
> >> Subject: Re: [xsl] (simple?) xpath question
> >> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> >> Date: Friday, August 29, 2008, 1:14 PM
> >> A better approach is to use the self axis along
> with true
> >> name tests:
> >>
> >> //*[self::a or self::c]
> >>
> >> The name() function will work too, but it will
> also select
> >> <a> and <c> 
> >> elements regardless of what their namespace is
> (and it may
> >> give 
> >> inconsistent results in such cases depending on
> whether
> >> prefixes are 
> >> used in the input or not). An actual name test in
> the
> >> expression, 
> >> indicating that you're only interested in
> <a> and
> >> <c> elements that 
> >> aren't in a namespace, is the way to go.
> >>
> >> Evan
> >>
> >>
> >> mozer wrote:
> >>     
> >>> Mark,
> >>>
> >>> //*[name() = 'a' or name() =
> 'c']
> >>>
> >>> is the right syntax
> >>>
> >>> Xmlizer
> >>>
> >>> On Fri, Aug 29, 2008 at 9:57 PM, mark bordelon
> >>>       
> >> <markcbordelon@xxxxxxxxx> wrote:
> >>     
> >>>   
> >>>       
> >>>> Thanks, Colin,
> >>>>
> >>>>
> >>>> Although the requirements cannot assume
> how many
> >>>>         
> >> levels there are between the root node and the
> desired node,
> >> your solution points me to something like this.
> Does this
> >> work?
> >>     
> >>>> //[name() == "a" and name() ==
> >>>>         
> >> "c"]
> >>     
> >>>>
> >>>>
> >>>> --- On Fri, 8/29/08, Colin Paul Adams
> >>>>         
> >> <colin@xxxxxxxxxxxxxxxxxx> wrote:
> >>     
> >>>>     
> >>>>         
> >>>>> From: Colin Paul Adams
> >>>>>           
> >> <colin@xxxxxxxxxxxxxxxxxx>
> >>     
> >>>>> Subject: Re: [xsl] (simple?) xpath
> question
> >>>>> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> >>>>> Date: Friday, August 29, 2008, 12:22
> PM
> >>>>>       
> >>>>>           
> >>>>>>>>>> "Mark"
> == mark
> >>>>>>>>>>                   
>  
> >> bordelon
> >>     
> >>>>>>>>>>                 
> >>>>>>>>>>                   
>  
> >>>>> <markcbordelon@xxxxxxxxx>
> writes:
> >>>>>
> >>>>>     Mark> All *help*!    What is
> the best
> >>>>>           
> >> way to query
> >>     
> >>>>> xml with xpath
> >>>>>     Mark> to get a disjoint
> nodelist?
> >>>>>           
> >> Specifically i
> >>     
> >>>>> want to include
> >>>>>     Mark> just the root node
> alongwith a
> >>>>>           
> >> descendent
> >>     
> >>>>> node.    XML:
> >>>>>     Mark> <a>   <b>    
> >>>>>           
> >> <c>
> >>     
> >>>>> </c>  </b> </a>  
> XPATH:  
> >>>>>           
> >> //c
> >>     
> >>>>>     Mark> DESIRED RESULT NODELIST:
> i.e. not
> >>>>>           
> >> this:
> >>     
> >>>>> <c> </c>   but
> >>>>>     Mark> rather this: <a>  
> >>>>>           
> >> <c>
> >>     
> >>>>> </c> </a>
> >>>>>
> >>>>> One possibility is:
> >>>>>
> >>>>> //*[name() != "b"]
> >>>>>
> >>>>> It depends on your exact requirements.
> >>>>> --
> >>>>> Colin Adams
> >>>>> Preston Lancashire

Current Thread