xsl-list
[Top] [All Lists]

[xsl] Grouping based on element content

2008-11-25 08:27:45
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>

--~------------------------------------------------------------------
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>