Subject: [xsl] Processing Efficiently From: Karl Stubsjoen <kstubs@xxxxxxxxx> Date: Wed, 8 Jun 2005 01:07:30 -0700 |
Hello, I would like to optimize the following: Where $s is a 5MB document and the source document is app 2-5MB. The goal: copy everything in the source that exists in $s. Catch: need to know the value of the balance in $s. $s looks like: <xls> <R row="2"> <C c="I">2AA9379</C><!-- match value "invoice" --> <C c="B">-127.5</C><!-- this is the balance --> </R> ... </xls> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" encoding="utf-8"/> <xsl:variable name="s" select="document('summarydata/summaryreduced.xml')//xls/R"/> <xsl:template match="/"> <result> <xsl:apply-templates select="xls/xlsRow[xlsColumn[@column='Invoice_#']=$s/C[@c='I'] | xlsColumn[@column='Balance'][not(.= $s/C[@c='B'])]]"/> </result> </xsl:template> <xsl:template match="xlsRow"> <xsl:variable name="current_invoice" select="xlsColumn[@column='Invoice_#']"/> <xsl:variable name="current_balance" select="$s[C[@c='I']=$current_invoice]/C[@c'B']"/> <xsl:variable name="diff_balance" select="$current_balance - xlsColumn[@column='Balance']"/> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:attribute name="current_balance"><xsl:value-of select="$current_balance"/></xsl:attribute> <xsl:attribute name="diff_balance"><xsl:value-of select="$diff_balance"/></xsl:attribute> <xsl:apply-templates select="xlsColumn"/> </xsl:copy> </xsl:template> <xsl:template match="@*"> <xsl:copy> <xsl:apply-templates select="@*"/> </xsl:copy> </xsl:template> <xsl:template match="xlsColumn"> <xsl:copy-of select="."/> </xsl:template> </xsl:stylesheet>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] [XSLT2] Now is your chance!, Pieter Reint Siegers | Thread | RE: [xsl] Processing Efficiently, tomas.vanek |
Re: [xsl] Pipe Question, Karl Stubsjoen | Date | Re: [xsl] Pipe Question, David Carlisle |
Month |