Subject: Re: [xsl] removing final space from node tree From: Andrew Welch <andrew.j.welch@xxxxxxxxx> Date: Mon, 20 Apr 2009 23:07:07 +0100 |
> <!-- We need to remove any extraneous final spaces. --> > <!-- set context node to language-desc --> > <xsl:for-each select="$language-desc"> > <!-- find last text node in descendants --> > <xsl:variable name="last-text-node" select="(.//text())[last()]"/> > <xsl:choose> > <xsl:when test="ends-with($last-text-node, ' ')"> > <xsl:apply-templates mode="strip-final-space" select="."> > <xsl:with-param name="last-text-node" > select="$last-text-node"/> > </xsl:apply-templates> > </xsl:when> > <xsl:otherwise><xsl:sequence select="."/></xsl:otherwise> > </xsl:choose> > </xsl:for-each> > > ... > > <!-- copy the context node tree, removing final space from the node > that is passed as a parameter. --> > <xsl:template mode="strip-final-space" match="@*|node()"> > <xsl:param name="last-text-node" /> > <xsl:choose> > <xsl:when test=". is $last-text-node"><xsl:value-of > select="substring(., 1, string-length(.) - 1)"/></xsl:when> > <xsl:otherwise> > <xsl:copy> > <xsl:apply-templates mode="strip-final-space" > select="@*|node()"> > <xsl:with-param name="last-text-node" > select="$last-text-node"/> > </xsl:apply-templates> > </xsl:copy> > </xsl:otherwise> > </xsl:choose> > </xsl:template> I think this would do the same job: <xsl:template match="text()"> <xsl:value-of select="if (. is /path/to/lanuguage-desc/descendant::text()[last()][ends-with(., ' ')]) then substring(., 1, string-length(.) - 1) else ."/> </xsl:template> -- Andrew Welch http://andrewjwelch.com Kernow: http://kernowforsaxon.sf.net/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] removing final space from, Wendell Piez | Thread | [xsl] grouping with xsl:for-each-gr, gregor FELLENZ |
Re: [xsl] removing final space from, Michael Ludwig | Date | Re: [xsl] removing final space from, Wendell Piez |
Month |