xsl-list
[Top] [All Lists]

Re: [xsl] combining node restrictions in select statements

2006-03-28 05:51:06
On 3/28/06, Andrew Smith <andrew(_dot_)smith(_at_)itility(_dot_)co(_dot_)uk> 
wrote:
Hi,

I have an XML structure passed to me and I want to perform to different
node restrictions on the tree.

<root>
        <a>
                <b>GUID1</b>
                <c>one</c>
                <d>
                        <e>A1</e>
                </d>
        </a>
        <a>
                <b>GUID1</b>
                <c>one</c>
                <d>
                        <e>A1</e>
                </d>
        </a>
        <a>
                <b>GUID2</b>
                <c>one</c>
                <d>
                        <e>A1</e>
                </d>
        </a>
</root>


<xsl:apply-templates select="/root/a[d[starts-with(e, 'A')]]" />

I currently have something like that, however, I also want to remove
duplicate nodes

<xsl:apply-templates select="/root/a[d[starts-with(e, 'A')]] and
a[not(b=following::a/b)]" />

That however doesn't work. Is there anyway this can be done? If so could
someone point me in the right direction.

Just drop the 'and' and use two predicates together:

/root/a[d[starts-with(e, 'A')]][not(b=following-sibling::a/b)]

The second predicate will operate on the results of applying the first
predicate.

If performance is important, you would be better off using keys to
remove duplicates.

cheers
andrew

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