[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Concatenate element values based on another key element

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
xsl concatenate values
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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.