xsl-list
[Top] [All Lists]

RE: Matching similar rows in a table

2004-07-15 01:51:57
FAQ,

I want to transform the below source xml to the destination xml with 
a XSLT script. I run into problems trying to generate the 
<chapter></chapter> tags because there is no structural textual 
"signal" in the source XML to match the start/end of a chapter.

The source XML is the export from a DB in the form of a table. Each 
page is in a row, only the first page has the chapter title, in the 
other page that column contains no data.

The XSLT script has to pick up the special first row, create the 
chapter and name tags and insert the pages for the chapter until 
another special first row is detected.

Alternatively I could generate XML which has the chapter name in each 
first column in the page row. Then the XSLT script will has to detect 
a change in the content of the first column and start a new chapter.

How can I do this in XSLT?

A grouping problem, see <http://jenitennison.com/xslt/grouping>.

  <xsl:template match="*[row]">
    <xsl:for-each select="row[col[1]/node()]">
      <chapter>
        <name>
          <xsl:value-of select="col[1]"/>
        </name>
        <xsl:apply-templates select="."/>
      </chapter>
    </xsl:for-each>
  </xsl:template>
  <xsl:template match="row">
    <page>
      <content>
        <xsl:value-of select="col[3]"/>
      </content>
    </page>
    <xsl:apply-templates 
select="following-sibling::row[1][not(col[1]/node())]"/>
  </xsl:template>

Cheers,

Jarno - Front Line Assembly: Plasticity


<Prev in Thread] Current Thread [Next in Thread>