Re: [xsl] Removing Duplicates & Formatting

Subject: Re: [xsl] Removing Duplicates & Formatting
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 10 Dec 2003 14:44:26 GMT
you'd probbaly better off doing this in two passes, first get the paths
then elimiate duplicates.

this uses saxon node-set extension to do two passes in one stylesheet,
more or less every xslt engine (except mozilla) has a similar extension.

<a>
  <b><c/><c/><d/></b>
  <b><d/></b>
  <c><d><e/></d></c>
  <c><d><e/></d></c>
</a>




<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0"
xmlns:saxon="http://icl.com/saxon";
extension-element-prefixes="saxon"
>
<xsl:output method="xml" indent="yes" />

<xsl:key name="ref" match="elem" use="ref"/>

<xsl:template match="/">
<xsl:variable name="x">
<xsl:for-each select="//*[not(*)]">
<p>
<xsl:for-each select="ancestor-or-self::*"
 >/<xsl:value-of select="name()"/>
</xsl:for-each>
</p>
</xsl:for-each>
</xsl:variable>

<xsl:copy-of select="saxon:node-set($x)/p[not(.=following-sibling::p)]"/>
</xsl:template>


</xsl:stylesheet>

$ saxon path.xml path.xsl
<?xml version="1.0" encoding="utf-8"?>
<p>/a/b/c</p>
<p>/a/b/d</p>
<p>/a/c/d/e</p>


-- 
http://www.dcarlisle.demon.co.uk/matthew

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread