Say I have source with mixed content like:
<foo>Some text and more text <bar/>. Some more text.</foo>
I need a "bar" matched template that will under certain
conditions move
that period that immediately follows the element to be ahead it.
E.g., in some conditions, output would be:
<foo_out>Some text and more text.<bar_out/> Some more text.</foo_out>
This seems like a simple problem, but I can't really fathom how to
solve it. I'm using XSLT 2.0.
How about:
<xsl:template match="/">
<div>
<xsl:apply-templates/>
</div>
</xsl:template>
<xsl:template match="text()[preceding-sibling::*[1][self::bar]]">
<xsl:choose>
<xsl:when test="substring(.,1,1) = '.'">
<xsl:text/>.<bar_out/>
<xsl:value-of select="substring(.,2)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
When applied to:
<foo>Some text and more text <bar/>. Some more text.</foo>
Results in:
<div>Some text and more text .<bar_out/> Some more text.</div>
cheers
andrew
--~------------------------------------------------------------------
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>
--~--