|
Subject: [xsl] n squared matching problem From: Alex Coll <alexcoll@xxxxxxxxx> Date: Tue, 9 Aug 2005 13:46:50 -0700 |
Hi, I'm having some performance issues with a stylesheet, and I
believe it could likely be improved but I'm inexperienced with XSL.
Here is a simplified version of the problem:
+++++++++++++++Sample xml:++++++++++++++++++++++++++++++=
<information>
<rawdatas>
<rawdata>
<key>A</key>
<value>1</value>
</rawdata>
<rawdata>
<key>A</key>
<value>2</value>
</rawdata>
<rawdata>
<key>B</key>
<value>3</value>
</rawdata>
<rawdata>
<key>C</key>
<value>1</value>
</rawdata>
<rawdata>
<key>B</key>
<value>1</value>
</rawdata>
<rawdata>
<key>D</key>
<value>0</value>
</rawdata>
<rawdata>
<key>E</key>
<value>1</value>
</rawdata>
</rawdatas>
<selectedkeys>
<key>A</key>
<key>B</key>
<key>C</key>
</selectedkeys>
++++++++++++++XSL algorithm I'm using:+++++++++++++++++++++++
<xsl:template match="/information">
<xsl:call-template name="selected-keys"/>
</xsl:template>
<xsl:template name="selected-keys">
<xsl:for-each select="/information/selectedkeys/key">
<xsl:call-template name="data">
<xsl:with-param name="match" select="."/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<xsl:template name="data">
<xsl:param name="match"/>
<xsl:for-each select="/information/rawdatas/rawdata">
<xsl:if test="key=$match">
Key <xsl:value-of select="$match"/> matched <xsl:value-of
select="value"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
</information>
+++++++++++++++++++++++Outputs:+++++++++++++++++++++++++++++
Key A matched 1
Key A matched 2
Key B matched 3
Key B matched 1
Key C matched 1
I can envision a single-pass approach where the keys are hashed to a
table and the values are appended to a list on collisions, but I'm not
sure how that's accomplished in a declaritive language like XSLT.
Any help greatly appreciated.
Alex
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] xsl:number on attribute n, Jack Matheson | Thread | Re: [xsl] n squared matching proble, David Carlisle |
| Re: [xsl] ANN: XSLT 2.0 unit testin, Elliotte Harold | Date | RE: [xsl] xsl:number on attribute n, Michael Kay |
| Month |