Hi everybody,
I am new to this list and apologize, if my question is an FAQ. I scanned
the archives, but did not find a solution. The question arises in a TEI
project where we have to switch from a chapter hierarchy to a page
oriented form. The XSLT is done in multiple steps (a cocoon pipeline)
and I use Saxon9.
Here is a simplified example of an infile:
<root>
<p>text <span order="start"/>text<span order="end"/> text</p>
<p>text <span order="start"/>text<span order="end"/> text
text <span order="start"/>text<span order="end"/> text</p>
<p>text text text <span order="start"/>text<span order="end"/></p>
<p><span order="start"/>text<span order="end"/> text text text</p>
</root>
which should result in the following output:
<root>
<p>text <span>text</span> text</p>
<p>text <span>text</span> text
text <span>text</span> text</p>
<p>text text text <span>text</span></p>
<p><span>text</span> text text text</p>
</root>
There my be an arbitrary number of <span order="begin"/> (and
corresponding end milestone tags) in a p element. Furthermore, any
"text" node may again contain markup which should be preserved in the
output. I tried various approaches but I failed. Here is one of my
attempts using sibling recursion ...
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="root">
<root><xsl:apply-templates/></root>
</xsl:template>
<xsl:template match="p">
<p>
<xsl:apply-templates select="child::node()" mode="procp"/>
</p>
</xsl:template>
<xsl:template match="span[(_at_)order='start']" mode="procp">
<span>
<xsl:apply-templates
select="following-sibling::node()[1][not(self::span)]"
mode="procp"/>
</span>
<xsl:apply-templates select="following-sibling::node()[1]"/>
</xsl:template>
<xsl:template match="node()" mode="procp">
<xsl:copy-of select="."/>
<xsl:apply-templates
select="following-sibling::node()[1][not(self::span)]"
mode="procp"/>
</xsl:template>
</xsl:stylesheet>
Any help would be greatly appreciated. Josef
--
Josef Schneeberger
josef(_at_)dr-schneeberger(_dot_)de
Nuernberg, Germany
--~------------------------------------------------------------------
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>
--~--