[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Grouping elements using XSLT


Subject: RE: [xsl] Grouping elements using XSLT
From: "Rick Roen" <Rick@xxxxxxxxxxxxxxxxxx>
Date: Tue, 20 Jun 2006 15:41:38 -0500

If they are always in this order <FirstName> then <LastName> you can get all
the nodes in <author>, then for each <FirstName> element you can select the
following-sibling:: which should get the <LastName> element.

Something like this:

<xsl:for-each select="author/FirstName" >
	<author>
		<xsl:value-of select="." />
		<xsl:value-of select="following-sibling[ name() = 'LastName'
]" />

	</author>
	
</xsl:for-each>

I added a test to make sure the following-sibling is indeed LastName, but
I'm not sure if this is necessary.  Untested!

Rick

-----Original Message-----
From: Chad Chelius [mailto:cchelius@xxxxxxxxxxxxxxx] 
Sent: Tuesday, June 20, 2006 3:18 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: [xsl] Grouping elements using XSLT

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
Keywords