xsl-list
[Top] [All Lists]

RE: transformation help

2004-06-14 00:54:13
In XSLT 2.0 you can do this with

<xsl:for-each-group select="*" group-starting-with="category">
<category name="{.}">
  <xsl:copy-of select="current-group() except ."/>
</category>
</xsl:for-each-group>

In 1.0, you can do:

<xsl:for-each select="category">
<category name="{.}">
  <xsl:copy-of
select="following-sibling::item[generate-id(preceding-sibling::category[1])
= generate-id(current())]"/>
</category>
</xsl:for-each>

In English, you are copying the following items whose imediately preceding
category is the current category.

Michael Kay 

-----Original Message-----
From: Marcus B. Irven [mailto:marcus(_at_)marcusirven(_dot_)com] 
Sent: 14 June 2004 09:20
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] transformation help

I have an xml doc in the form of

<doc>
<category>cat 1</category>
<item>item 1</item>
<item>item 2</item>
<category>cat 1</category>
<item>item 3</item>
<item>item 4</item>
<item>item 5</item>
</doc>

and i want to transform it into

<doc>
<category name=3D"cat 1">
<item>item 1</item>
<item>item 2</item>
</category>
<category name=3D"cat 2">
<item>item 3</item>
<item>item 4</item>
<item>item 5</item>
</category>
</doc>

how should i go about this?

Thanks,
Marcus


--+------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--+--





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