Subject: RE: Grouping elements using XSLT
From: "Rick Roen" <Rick@xxxxxxxxxxxxxxxxxx>
Date: Tue, 20 Jun 2006 15:53:49 -0500
|
SORRY, that was wrong. Following-sibling selects ALL nodes that follow, so
you want select="following-sibling[1]"
Rick
-----Original Message-----
From: Rick Roen [mailto:Rick@xxxxxxxxxxxxxxxxxx]
Sent: Tuesday, June 20, 2006 3:42 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: Grouping elements using XSLT
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: 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?
|