xsl-list
[Top] [All Lists]

[xsl] More Efficient way of mathching ID's

2006-04-03 13:23:28
Hi Everyone, thanks in advance for the help.

I have an xsl file that looks up elements in one xml file, and inserts
them into another. Pretty common problem on the web and on this list.
I was able to get it working, however the processing is excruciatingly
slow. Was wondering if anyone had some thoughts on speeding up
performance?

*** Combine.xsl ***

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:variable name="fIntents" select="document('Reference.xml')"/>

<xsl:template match="/">
        <xsl:apply-templates/>
</xsl:template>

<xsl:template match="*">
        <xsl:copy>
                <xsl:copy-of select="@*"/>
                <xsl:apply-templates/>
        </xsl:copy>
</xsl:template>

<xsl:template match="sentence">
        <xsl:variable name="mykey" select="@qpid"/>
        <xsl:copy>
                <xsl:copy-of select="@*"/>
                        <xsl:apply-templates 
select="$fIntents//sentence[(_at_)qpid = $mykey]/intentref"/>
                <xsl:apply-templates/>
        </xsl:copy>
</xsl:template>

</xsl:stylesheet>

*** Without.xml ***

<?xml version="1.0"?>
<document>
        <article qpid="004243">
                <title>Test test Test Test Test</title>
                <sentence qpid="007309">
                        <text>
                                Test test Test Test Test</text>
                </sentence>
        </article>
        <change-begin/>
        <article qpid="004244">
                <title>Test test Test Test Test</title>
                <sentence qpid="007310">
                        <text>Test test Test Test Test</text>
                </sentence>
                <sentence qpid="007311">
                        <text>Test test Test Test Test</text>
                </sentence>
        </article>
</document>

*** Reference.xml ***

<?xml version="1.0"?>
<document>
        <article qpid="004243">
                <title>Test2 Test2 Test2 Test2 Test2</title>
                <sentence qpid="007309"><intentref ref="int1"/>
                        <text>Test2 Test2 Test2 Test2 Test2</text>
                </sentence>
        </article>
        <change-begin/>
        <article qpid="004244">
                <title>Test2 Test2 Test2 Test2 Test2</title>
                <sentence qpid="007310"><intentref ref="int2"/>
                        <text>Test2 Test2 Test2 Test2 Test2</text>
                </sentence>
                <sentence qpid="007311"><intentref ref="int3"/>
                        <text>Test2 Test2 Test2 Test2 Test2</text>
                </sentence>
        </article>
</document>


*** With.xml (My Output, Exactly what I need) ***

<?xml version='1.0' ?>
<document>
        <article qpid="004243">
                <title>Test test Test Test Test</title>
                <sentence qpid="007309"><intentref ref="int1"/>
                        <text>
                                Test test Test Test Test</text>
                </sentence>
        </article>
        <change-begin/>
        <article qpid="004244">
                <title>Test test Test Test Test</title>
                <sentence qpid="007310"><intentref ref="int2"/>
                        <text>Test test Test Test Test</text>
                </sentence>
                <sentence qpid="007311"><intentref ref="int3"/>
                        <text>Test test Test Test Test</text>
                </sentence>
        </article>
</document>

As a note, reference.xml is much much bigger than this small test and
will have all the qpid's I need to deal with the qpid's in without.xml
file,, as well as a bunch more that will not be needed. I hope this
illustrates what I' trying to do.

Spencer

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

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