xsl-list
[Top] [All Lists]

Re: [xsl] Selecting the node which have child without repition

2010-11-18 16:27:18
I see three problems with the current expression, based on your
requirements.  First, you want to filter out those <b> elements that
match preceding <b>s, rather than following <b>s.  Second, it only
looks at siblings, but the second group of <b>s aren't siblings of the
first group.  Last, you really only want to filter out a <b> if the
preceding <b> that it matches has a <c> child, otherwise it would not
have been selected.

Given all that, try something like:

    //b[child::c][not(./@name=(preceding-sibling::b[child::c]/@name |
../preceding-sibling::a/b[child::c]/@name))]

-Brandon :)


On Thu, Nov 18, 2010 at 12:35 PM, Rashi Bhardwaj
<rashi(_dot_)bhardwaj(_at_)gmail(_dot_)com> wrote:
Hi all,

I am facing a problem while selecting a node through xpath....please help me 
out

Here is the input xml

<test>
  <a>
   <b name ='1'></b>
   <b name ='2'></b>
   <b name ='3'>
        <c></c>
   </b>
   <b name ='4'>
       <c></c>
       <c></c>
   </b>
 </a>
 <a>
  <b name ='1'></b>
  <b name ='2'>
     <c></c>
  </b>
  <b name ='3'></b>
  <b name ='4'>
    <c></c>
  </b>
 </a>
</test>

Xpath:
//b[child::c][not(./@name=following-sibling::b/@name)]

Output:
b name="3"
b name="4"
b name="2"
b name="4"

What I want is to select all 'b' that have child 'c', provide the 'b'
with same '@name' which are selected first should not be selected
further.

Desired output:

Output:
b name="3"
b name="4"
b name="2"

As b with @name = 4 has already been searched, it should not come
again in search.

Please help me .....thanks a lott....

Rashi

--~------------------------------------------------------------------
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>
--~--

<Prev in Thread] Current Thread [Next in Thread>