|
Subject: Re: [xsl] Test character immediately preceding node From: David Sewell <dsewell@xxxxxxxxxxxx> Date: Tue, 8 Oct 2013 17:12:50 -0400 (EDT) |
<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><unittitle>Statements 2001</unittitle> <unittitle>Statements 2001</unittitle>
<xsl:template match="unittitle">
<xsl:copy>
<xsl:value-of select="string-join((normalize-space(text()), unitdate), ' ')"/>
</xsl:copy>
</xsl:template>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
-- David Sewell, Editorial and Technical Manager ROTUNDA, The University of Virginia Press PO Box 400314, Charlottesville, VA 22904-4314 USA Email: dsewell@xxxxxxxxxxxx Tel: +1 434 924 9973 Web: http://rotunda.upress.virginia.edu/
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Test character immediately pr, Nathan Tallman | Thread | Re: [xsl] Test character immediatel, Dimitre Novatchev |
| [xsl] Test character immediately pr, Nathan Tallman | Date | Re: [xsl] Test character immediatel, Dimitre Novatchev |
| Month |