xsl-list
[Top] [All Lists]

RE: preceding/following character?

2005-06-17 00:58:27
 
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>
--~--



<Prev in Thread] Current Thread [Next in Thread>