Relative newbie question: XSLT 2.0, grouping with text nodes and
mixed text
I'm trying to convert a non-XML dictionary into XML. I've got it
mostly done, but I want to input
elements that currently look like
<examples>
<hop>source sentence 1</hop>
translation of source sentence 1
<hop>source sentence 2</hop>
translation of source sentence 2
<hop>source sentence 3</hop>
a translation can be <emph>mixed</emph> text
</examples>
and transform them into this
<examples>
<example-pair>
<hop>source sentence 1</hop>
<eng>translation of source sentence 1</eng>
</example-pair>
<example-pair>
<hop>source sentence 2</hop>
<eng>translation of source sentence 2</eng>
</example-pair>
<example-pair>
<hop>source sentence 3</hop>
<eng>a translation can be <emph>mixed</emph> text</eng>
</example-pair>
</examples>
i.e. each original <hop> element in <examples> is followed by plain
text or mixed text,
not containing <hop> or <examples> elements. I want to group the
nodes after each
<hop> element and wrap them in <eng>...</eng> tags. I tried the
following, and a few
other variations, but the desired <eng> element comes out an empty
<eng/>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform
">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="examples">
<examples>
<xsl:for-each-group select="*" group-starting-with="hop">
<example-pair>
<!-- copy the hop element-->
<xsl:copy-of select="."/>
<!-- and then surround the mixed text following
the hop element
with eng tags -->
<eng>
<xsl:apply-templates select="current-group()
except ."/>
</eng>
</example-pair>
</xsl:for-each-group>
</examples>
</xsl:template>
<!-- default copying of the document -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Would some kind guru please tell me how I can do this?
Thanks,
Ken
******************************
Kenneth R. Beesley, D.Phil.
P.O. Box 540475
North Salt Lake, UT
84054 USA
--~------------------------------------------------------------------
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>
--~--