[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Test character immediately preceding node
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:
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|