|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Remove duplicates from a list
Given an input of:
<?xml version="1.0"?>
<data>
<employee id="ttaylor">
<skill title="java"/>
</employee>
<employee id="jdoe">
<skill title="perl"/>
<skill title="java"/>
</employee>
</data>
and a stylesheet of:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="//skill/@title[not( self::node() =
following::skill/@title )]">
skill=<xsl:value-of select="." />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
you can get the output of:
G:\xmlSchema>xt t_.xml t_.xsl
skill=perl
skill=java
Tim Taylor wrote:
>
> I have a similar, but more complicated problem. Given the following XML
> snippet:
>
> <skill title="java"/>
> <skill title="perl"/>
> <skill title="java"/>
>
> I would like to transform to:
>
> java
> perl
>
...
> Also, since this is really a learning excercise of my own creation, I'm
> really after comprehension more than the solution. Please explain the
> solution, or provide pointers to information explaining it.
I think I know why the expression
"//skill/@title[not(self::node() = following::skill/@title)]"
works - because the XPATH spec states that
"If both objects to be compared are node-sets, then the comparison will
be true if and only if there is a node in the first node-set and a node
in the second node-set such that the result of performing the comparison
on the string-values of the two nodes is true"
and each skill/@title is being compared to all skill/@title[s] following
it.
However if you replace the expression with
"//skill/@title[not( self::node()/text() =
following::skill/@title/text() )]"
it stops eliminating duplicates - this appears to be because in XPATH
(unlike DOM) atttribute nodes do not have text nodes (or any other
sub-nodes), they just have text values.
Francis.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








