xsl-list
[Top] [All Lists]

RE: Source Reducer

2005-06-06 09:03:13

I have a source xml which is 19MB +  I'm running the 
following "source reducer" template against it using the 
MSXML4 parser, however it is slow (has been running well over 
2 min. now).  Any suggestions on how to optimize this source 
reducer template?  Also, how does the ancestor match below 
work, what does it do exactly?

<xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
   <xsl:copy>
     <xsl:apply-templates select="node()|@*"/>
   </xsl:copy>
 </xsl:template>

 <xsl:template match="/*/*[position() > 20]"/>

 <xsl:template match="*[ancestor::*[3]]"/>

The final no-op template will match any element with 3 ancestors - it
means the result tree will be no more than 3 deep.  

To improve performance you need to replace the use of the ancestor axis
with something else... but the only thing that instantly springs to mind
is to use modes eg:

 <xsl:template match="node()|@*">
   <xsl:copy>
     <xsl:apply-templates select="node()|@*" mode="second"/>
   </xsl:copy>
 </xsl:template>

 <xsl:template match="node()|@*" mode="second">
   <xsl:copy>
     <xsl:apply-templates select="node()|@*" mode="stop"/>
   </xsl:copy>
 </xsl:template>

 <xsl:template match="node()" mode="stop"/>

I'm sure there is a better way...

--~------------------------------------------------------------------
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>