Subject: [xsl] Performance with grouping From: Maulik Modi <MModi@xxxxxxxxxx> Date: Tue, 19 Mar 2002 16:12:53 -0600 |
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> using the following XSL (snippet): <xsl:template match="/"> <residents> <xsl:apply-templates select="RESPONSES/RESPONSE[1]"/> </residents> </xsl:template> <xsl:template match="RESPONSE[1]"> <xsl:for-each select="*"> <resident> <xsl:apply-templates select="../following-sibling::RESPONSE/*[local-name()=local-name(current())] "> <xsl:with-param name="tagname" select="normalize-space(.)"/> </xsl:apply-templates> </resident> </xsl:for-each> </xsl:template> <xsl:template match="*"> <xsl:param name="tagname"/> <xsl:element name="{$tagname}"> <xsl:value-of select="."/> </xsl:element> </xsl:template> I could loop around and get the grouping how I need it. However, because the source XML can get pretty large at times, I am looking for a solution that would make the most sense performance wise. I am using Xalan-J-2_2. Any help would be appreciated. Thanks, Maulik Modi mmodi@xxxxxxxxxx XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Re: Evaluating text from with, Dimitre Novatchev | Thread | [xsl] Totally OT, Chris Bayes |
RE: [xsl] Retrieving named elements, STEPHEN_R_FRIEDLAND | Date | [xsl] Totally OT, Chris Bayes |
Month |