This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Performance with grouping
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Wed, 20 Mar 2002 09:32:57 -0000
- Subject: RE: [xsl] Performance with grouping
- Reply-to: xsl-list at lists dot mulberrytech dot com
The following should give the right result and adequate performance:
<xsl:variable name="first" select="/RESPONSES/RESPONSE[1]"/>
<xsl:template match="RESPONSES">
<residents>
<xsl:apply-templates/>
</residents>
</xsl:template>
<xsl:template match="RESPONSE[1]"/>
<xsl:template match="RESPONSE">
<resident>
<xsl:for-each select="*">
<xsl:element name="{$first/*[name()=name(current())]}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:for-each>
</resident>
</xsl:template>
Not tested.
Michael Kay
Software AG
home: Michael.H.Kay@ntlworld.com
work: Michael.Kay@softwareag.com
> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of Maulik Modi
> Sent: 19 March 2002 22:13
> To: xsl-list@lists.mulberrytech.com
> Subject: [xsl] Performance with grouping
>
>
> Hi,
>
> I have the following XML :
>
> <RESPONSES>
> <RESPONSE>
> <C0><![CDATA[Res_ID]]></C0>
> <C1><![CDATA[Res_Type]]></C1>
> <C2><![CDATA[Error]]></C2>
> </RESPONSE>
> <RESPONSE>
> <C0><![CDATA[15760412_105755]]></C0>
> <C1><![CDATA[SF-IND]]></C1>
> <C2><![CDATA[Unverifiable Service Address]]></C2>
> </RESPONSE>
> <RESPONSE>
> <C0><![CDATA[15930044_106686]]></C0>
> </RESPONSE>
> <RESPONSE>
> <C0><![CDATA[15600408_106431]]></C0>
> <C1><![CDATA[SF-IND]]></C1>
> </RESPONSE>
> </RESPONSES>
>
> The actual XML could have several children like C0, C1,
> C2.......Cn and also
> several RESPONSE tags. I need to dynamically extract the
> tagname from always
> the first <RESPONSE> node and then do further processing to group each
> node-set into a <resident> tag like:
>
> <residents>
> <resident>
> <Res_ID>15760412_105755</Res_ID>
> <Res_Type>SF-IND</Res_Type>
> <Error>Unverifiable Service Address</Error>
> </resident>
> <resident>
> <Res_ID>15930044_106686</Res_ID>
> <Res_Type>SF-IND</Res_Type>
> </resident>
> <resident>
> <Res_ID>15600408_106431</Res_ID>
> <Res_Type>SF-IND</Res_Type>
> </resident>
> </residents>
>
> However, what I have working so far is this:
>
> <residents>
> <resident>
> <Res_ID>15760412_105755</Res_ID>
> <Res_ID>15930044_106686</Res_ID>
> <Res_ID>15600408_106431</Res_ID>
> </resident>
> <resident>
> <Res_Type>SF-IND</Res_Type>
> <Res_Type>SF-IND</Res_Type>
> </resident>
> <resident>
> <Error>Unverifiable Service Address</Error>
> </resident>
> </residents>
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list