This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Checking the text nodes just preceding the context
- To: xsl-list at lists dot mulberrytech dot com
- Subject: RE: [xsl] Checking the text nodes just preceding the context
- From: Jarno dot Elovirta at nokia dot com
- Date: Thu, 27 Sep 2001 06:59:57 +0300
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hip hei!
[...]
> Now I can guarantee that <foo> will be child of <p> but nothing else.
>
> Any ideas how to do this?
I don't undestand that quarentee part of your question, but this
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="foo">
<xsl:variable name="text"
select="normalize-space(preceding::text()[normalize-space() != ''][1])" />
<xsl:choose>
<xsl:when test="substring($text, string-length($text)) =
'.'">Foo</xsl:when>
<xsl:otherwise>foo</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
will do the capitalization - just retrive the first preceding text node that
is not whitespace, normalize that, and then test if the last character is a
period. Hope this helps,
Jarno
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list