[xsl] how to remove duplicates from more than one file?

Subject: [xsl] how to remove duplicates from more than one file?
From: Marcin Antczak <marcin.antczak@xxxxxxxx>
Date: Sat, 07 Dec 2002 22:03:47 +0100
My input is:

root.xml

<root/>


items_1.xml


<items>
	<item name='one'>value_1</item>
	<item name='one'>value_1</item>
	<item name='two'>value_2</item>
	<item name='three'>value_3</item>
</items>


items_2.xml (and more.... items_*.xml)


<items>
	<item name='one'>value_1</item>
	<item name='one'>value_1</item>
	<item name='two'>value_2</item>
	<item name='two'>value_2</item>
	<item name='one'>value_1</item>
	<item name='seven'>value_7</item>
</items>


And I need to generate output with items from all input files without duplicates:


<itemList>
	<item name='one'>value_1</item>
	<item name='two'>value_2</item>
	<item name='three'>value_3</item>
	<item name='seven'>value_7</item>
</itemList>

My first idea was to grab extrernal data with document() function into variable and then use Muenchian method on nodeset within this variable.

In my stylesheet I did something like this:

<xsl:key name="items" match="item" use="@name"/>

<xsl:variable name="source">
<xsl:copy-of select="document('items_1.xml')//item | document('items_2.xml')//item"/>
</xsl:variable>


<xsl:for-each select="$source">
<xsl:for-each select="//item[generate-id(.)=generate-id(key('items', @name)[1])]">
<test_ok/>
</xsl:for-each>
</xsl:for-each>


But on my windows machine (win 2000 + IIS 5.0 + PHP 4.2.3 + sablotron 0.96 - server side transformations) i get only segfaults.

On unix machine (freeBSD) there was no errors but any output at all either.

Could you give me hint how to resolve this problem?


Marcin Antczak












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


Current Thread