Subject: RE: Concatenate element values based on another key element From: "Eliot, Topher" <Christopher_Eliot@xxxxxxxxxxxxx> Date: Thu, 12 Oct 2000 20:35:42 -0600 |
Here's a partial solution. It doesn't iterate through the integer values, but it does collect all the text for each value pretty well. I gotta go home now, my wife is wondering where the heck I am. <?xml version="1.0" encoding="ISO-8859-1" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:strip-space elements="*" /> <xsl:output method="xml" indent="yes" /> <!-- Set up a key that finds recs by some_id value --> <xsl:key name="idKey" match="rec" use="some_id" /> <xsl:template match="/test"> <!-- Unfortunately I haven't solved the iteration (recursion?) problem here --> <xsl:call-template name="doOneIdValue"> <xsl:with-param name="idValue" select="1" /> </xsl:call-template> <xsl:call-template name="doOneIdValue"> <xsl:with-param name="idValue" select="2" /> </xsl:call-template> <xsl:call-template name="doOneIdValue"> <xsl:with-param name="idValue" select="3" /> </xsl:call-template> </xsl:template> <xsl:template name="doOneIdValue"> <xsl:param name="idValue" /> <rec> <some_id><xsl:value-of select="$idValue"/></some_id> <some_text> <xsl:apply-templates mode="string" select="key('idKey', $idValue)" /> </some_text> </rec> </xsl:template> <xsl:template mode="string" match="rec"> <xsl:value-of select="some_text" /> </xsl:template> </xsl:stylesheet> > -----Original Message----- > From: BC Huang [mailto:bc.huang@xxxxxxxx] > Sent: Thursday, October 12, 2000 11:52 AM > To: XSL-List@xxxxxxxxxxxxxxxx > Subject: Concatenate element values based on another key element > > > I am trying to write a template to concatenate values from an > element based > on another key element. The source document looks like this: > > > <test> > <rec> > <some_id>1</some_id> > <some_text>text for id 1</some_id> > </rec> > > <rec> > <some_id>2</some_id> > <some_text>first line of text for id 2</some_text> > </rec> > > <rec> > <some_id>2</some_id> > <some_text>second line of text for id 2</some_text> > </rec> > > <rec> > <some_id>2</some_id> > <some_text>nth line of text for id 2</some_text> > </rec> > > <rec> > <some_id>3</some_id> > <some_text>text for id 3</some_text> > </rec> > </test> > > The number of <rec>s can vary and each ID can have as many > lines (thus recs) > of text. In terms of the id element, they are duplicates, > but I need to > concatenate the related the element (some_text) and produce > one single rec > in the output like this: > > <test> > <rec> > <some_id>1</some_id> > <some_text>text for id 1</some_text> > </rec> > > <rec> > <some_id>2</some_id> > <some_text>first line of text for id 2 second line of > text for id 2 nth > line of text for id 2</some_text> > </rec> > > <rec> > <some_id>3</some_id> > <some_text>text for id 3</some_text> > </rec> > </test> > > Could anyone help me on this. Thank you very much in advance. > > Ben > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
<- Previous | Index | Next -> |
---|---|---|
Concatenate element values based on, BC Huang | Thread | Re: Concatenate element values base, BC Huang |
XML -> Java Properties -> XML, Dylan Parker | Date | Re: Variable names *as* variables, Paul Tchistopolskii |
Month |