[xsl] Efficient way to do an identity transform, eliminating duplicate elements, in XSLT 1.0?

Subject: [xsl] Efficient way to do an identity transform, eliminating duplicate elements, in XSLT 1.0?
From: "Costello, Roger L." <costello@xxxxxxxxx>
Date: Fri, 13 Dec 2013 14:33:06 +0000
Hi Folks,

I need to do an identity transform on XML files like this:

<Document>
    <First>
        <id>A</id>
        <blah>B</blah>
        <id>A</id>
    </First>
    <Second>
        <id>C</id>
        <blah>D</blah>
        <id>C</id>
    </Second>
</Document>

I want the identity transform to remove duplicate elements in <First> and
remove duplicate elements in <Second>. So the output should be:

<Document>
    <First>
        <id>A</id>
        <blah>B</blah>
    </First>
    <Second>
        <id>C</id>
        <blah>D</blah>
    </Second>
</Document>

I need to use XSLT 1.0 to implement this.

I created an implementation, but it uses <copy> statements. The actual XML
document that I am transforming is huge, nearly 1 GB. When I run my XSLT
implementation the processor runs out of memory. I think it's due to the
<copy> statements. I need a very efficient implementation. Any suggestions?

/Roger

Current Thread