One strategy in XSLT 2.0 would be to test for the existence of a space at the
end of the preceding node and add a space if it's not there:
<xsl:template match="unittitle">
<xsl:copy><xsl:apply-templates/></xsl:copy>
</xsl:template>
<xsl:template match="unitdate">
<xsl:choose>
<xsl:when test="preceding-sibling::node()[1][matches(., '\s$')]">
<xsl:value-of select="."/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(' ', .)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
which will give you
<unittitle>Statements 2001</unittitle>
<unittitle>Statements 2001</unittitle>
but the following should accomplish the same thing with more concision and is
more robust as it will handle multiple spaces before <unitdate> if they occur:
<xsl:template match="unittitle">
<xsl:copy>
<xsl:value-of select="string-join((normalize-space(text()), unitdate), '
')"/>
</xsl:copy>
</xsl:template>
DS
On Tue, 8 Oct 2013, Nathan Tallman wrote:
Is it possible to test a character immediately preceding a node? I
have an element with child-elements, my trouble is that sometimes
there is a space before the child-element, sometimes not. For example
I might have:
<unittitle>Statements <unitdate>2001</unitdate></unittitle>
or
<unittitle>Statements<unitdate>2001</unitdate></unittitle>
The XSLT that I'm forking from has instructions to insert a space
before <unitdate>, which sometimes results in two spaces in the
output. I'd like to use an xsl:choose to test for a space immediately
preceding <unitdate>. Is this possible? I'm using XSLT 2.0.
Thanks,
Nathan
--~------------------------------------------------------------------
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>
--~--
--
David Sewell, Editorial and Technical Manager
ROTUNDA, The University of Virginia Press
PO Box 400314, Charlottesville, VA 22904-4314 USA
Email: dsewell(_at_)virginia(_dot_)edu Tel: +1 434 924 9973
Web: http://rotunda.upress.virginia.edu/
--~------------------------------------------------------------------
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>
--~--