xsl-list
[Top] [All Lists]

how to remove duplicates from more than one file?

2002-12-07 14:03:47
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



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