Re: [xsl] Grouping elements using XSLT

Subject: Re: [xsl] Grouping elements using XSLT
From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx>
Date: Wed, 21 Jun 2006 10:13:02 +0530
Your XML is not well formed. I corrected the XML to:

<author>
 <FirstName>Jane</FirstName>
 <LastName>Doe</LastName>
 <FirstName>John</FirstName>
 <LastName>Doe</LastName>
 <FirstName>Howard</FirstName>
 <LastName>Johnson</LastName>
</author>

The following stylesheet will work:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:output method="xml" indent="yes" />

   <xsl:template match="/author">
      <authors>
          <xsl:for-each select="FirstName">
              <author>
                   <xsl:copy-of select=". | following-sibling::LastName[1]" />
              </author>
          </xsl:for-each>
      </authors>
   </xsl:template>

</xsl:stylesheet>

Regards,
Mukul

On 6/21/06, Chad Chelius <cchelius@xxxxxxxxxxxxxxx> wrote:
I have an XML file that looks like this:

<author>
<Firstname>Jane</FirstName>
<LastName>Doe</Doe>
<Firstname>John</FirstName>
<LastName>Doe</Doe>
<Firstname>Howard</FirstName>
<LastName>Johnson</Doe>
</author>

The DTD that I am trying to validate to requires that each person be
inside of their own <author> element like this:

<author>
<Firstname>Jane</FirstName>
<LastName>Doe</Doe>
</author>
<author>
<Firstname>John</FirstName>
<LastName>Doe</Doe>
</author>
<author>
<Firstname>Howard</FirstName>
<LastName>Johnson</Doe>
</author>

Is this possible using an XSLT and if so, how do you do this?

Current Thread