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