This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Performance with grouping


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]