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

[xsl] Grouping based on element content


Subject: [xsl] Grouping based on element content
From: "Ganesh Babu N" <nbabuganesh@xxxxxxxxx>
Date: Tue, 25 Nov 2008 18:57:17 +0530

Dear All,

Inspired by the Bob DuCharme article on Automating Stylesheet
Creation, I am trying to create automatic XSL from meta XML prepared
from a table. Here is the XML file of mapping table and needs to be
converted into source and target groups based on "to". But when i
apply my stylesheet all the <Cell> are getting converted into
<source>. Please guide me where I am going wrong.

Input XML:

 <Row>
    <Cell><Data ss:Type="String">doi</Data></Cell>
    <Cell><Data ss:Type="String">pii</Data></Cell>
    <Cell><Data ss:Type="String">aid</Data></Cell>
    <Cell><Data ss:Type="String">to</Data></Cell>
    <Cell><Data ss:Type="String">article-id</Data></Cell>
    <Cell><Data ss:Type="String">@doi</Data></Cell>
    <Cell><Data ss:Type="String">@pii</Data></Cell>
    <Cell><Data ss:Type="String">@publisher-id</Data></Cell>
   </Row>

XSL:

<xsl:template match="ss:Row">
<xsl:element name="map">
<xsl:for-each-group select="ss:Cell/ss:Data"
group-ending-with="*[text() eq 'to']">
<xsl:for-each select="current-group()">
<source><xsl:apply-templates/></source>
</xsl:for-each>
</xsl:for-each-group>
</xsl:element>
</xsl:template>

Expected output:
 <map>
    <source>doi</source>
    <source>pii</source>
    <source>aid</source>
    <target>article-id</target>
    <target>@doi</target>
    <target>@pii</target>
    <target>@publisher-id</target>
   </map>


Current Thread
Keywords