xsl-list
[Top] [All Lists]

Re: [xsl] (simple?) xpath question

2008-08-29 15:20:12
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(_at_)evanlenz(_dot_)net> wrote:

From: Evan Lenz <evan(_at_)evanlenz(_dot_)net>
Subject: Re: [xsl] (simple?) xpath question
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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(_at_)yahoo(_dot_)com> 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(_at_)colina(_dot_)demon(_dot_)co(_dot_)uk> wrote:

    
From: Colin Paul Adams
<colin(_at_)colina(_dot_)demon(_dot_)co(_dot_)uk>
Subject: Re: [xsl] (simple?) xpath question
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Date: Friday, August 29, 2008, 12:22 PM
      
"Mark" == mark
bordelon
                
<markcbordelon(_at_)yahoo(_dot_)com> 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


--~------------------------------------------------------------------
XSL-List info and archive:
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to:
http://lists.mulberrytech.com/xsl-list/
or e-mail:

<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
      



--~------------------------------------------------------------------
XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to:
http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


    


--~------------------------------------------------------------------
XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to:
http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

  


--~------------------------------------------------------------------
XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to:
http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


      

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--