Re: [xsl] Concat state-city together

Subject: Re: [xsl] Concat state-city together
From: "Alexander Gutman" <gutman@xxxxxxxxxxxxxxx>
Date: Sun, 29 Jul 2001 12:44:52 +0700
Helo.

One of possible solutions is presented below.
If you want the output to be text rather than XML, use
<xsl:output method="text"/> and modify the templates accordingly.

  <xsl:template match="/*">
    <pairs>
      <xsl:apply-templates select="row[cell[@column='2']]"/>
    </pairs>
  </xsl:template>

  <xsl:template match="row">
    <pair>
      <xsl:variable name="state-row" 
select="preceding-sibling::row[cell[@column='1']][1]"/>
      <xsl:choose>
        <xsl:when test="$state-row"><xsl:value-of 
select="$state-row/cell"/></xsl:when>
        <xsl:otherwise>Unknown</xsl:otherwise>
      </xsl:choose>
      <!---->-<xsl:value-of select="cell"/>
    </pair>
  </xsl:template>

Xiaocun Xu wrote:
>   I am having problem figure this out, so any help is
> appreciated.
>   I have a source document, where a row contain either
> state or city names.  State names are always located
> at cell/@column=1 and city names are always
> cell/@column=2.  I want to concat each of the city
> names with the last state name in the previous rows.
> Following is an example:
> 
> Source XML:
> <row row="17">
>       <cell column="1">Alabama</cell>
> </row>
> <row row="18">
>       <cell column="2">Birmingham</cell>
> </row>
> <row row="19">
>       <cell column="2">Hoover</cell>
> </row>
> <row row="20">
>       <cell column="1">Arizona</cell>
> </row>
> <row row="21">
>       <cell column="2">Phoenix</cell>
> </row>
> <row row="22">
>       <cell column="2">Tucson</cell>
> </row>
> <!-- more states and cities follows -->
> 
> Target text:
> Alabama-Birmingham
> Alabama-Hoover
> Arizona-Phoenix
> Arizona-Tucson

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread