RE: [xsl] tansforming an XML into another XML help needed !

Subject: RE: [xsl] tansforming an XML into another XML help needed !
From: cknell@xxxxxxxxxx
Date: Wed, 20 Apr 2005 12:14:06 -0400
Here's another approach:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <xsl:output method="xml" indent="yes" encoding="UTF-8" />
  <xsl:strip-space elements="*" />

  <xsl:template match="/">
    <xsl:apply-templates />
  </xsl:template>

  <xsl:template match="record">
    <record name="{@name}">
      <xsl:apply-templates />
    </record>
  </xsl:template>

  <xsl:template match="item[@name='Title_EN']">
    <item name="english">
      <value>
        <item name="Title">
          <value><xsl:value-of select="value" /></value>
        </item>
      <xsl:if test="following-sibling::item[@name='Paragraph']/value/item[@name='SubParagraph_EN']">
        <item name="Paragraph">
          <value>
            <xsl:apply-templates select="following-sibling::item[@name='Paragraph']/value/item[@name='SubParagraph_EN']" />
          </value>
        </item>
      </xsl:if>
      </value>
    </item>
  </xsl:template>

  <xsl:template match="item[@name='Title_FR']">
    <item name="french">
      <value>
        <item name="Title">
          <value><xsl:value-of select="value" /></value>
        </item>
      </value>
      <xsl:if test="following-sibling::item[@name='Paragraph']/value/item[@name='SubParagraph_FR']">
        <item name="Paragraph">
          <value>
            <xsl:apply-templates select="following-sibling::item[@name='Paragraph']/value/item[@name='SubParagraph_FR']" />
          </value>
        </item>
      </xsl:if>
    </item>
  </xsl:template>

  <xsl:template match="item">
    <item name="common">
      <value>
        <xsl:copy-of select="." />
      </value>
    </item>
  </xsl:template>

  <xsl:template match="item[@name='SubParagraph_EN'] | item[@name='SubParagraph_FR']">
    <item name="SubParagraph">
      <xsl:copy-of select="value" />
    </item>
  </xsl:template>

  <xsl:template match="item[@name='Paragraph']" />

</xsl:stylesheet>
-- 
Charles Knell
cknell@xxxxxxxxxx - email

Current Thread