At 2012-11-16 12:01 -0500, Nathan Tallman wrote:
I'd like to replace hyphens with en dashes. In XSLT 2.0, I can do this
with replace(text()), but I'm limited to XSLT 1.0.
How could I achieve the same thing in XSLT 1.0?
<xsl:value-of select="replace(//text(), '-', '–')"/>
First of all, I would expect the above statement to fail because the
first argument to replace has to be a singleton. I would have used:
<xsl:value-of select="replace(.,'-','–')"/>
As for an XSLT 1.0 version, you need a recursive call to walk through
the string making one replacement at a time along the lines of this
untested fragment:
<xsl:template name="dashes">
<xsl:param name="content" select="."/>
<xsl:choose>
<xsl:when test="contains($content,'-')">
<xsl:value-of select="substring-before($content,'-')"/>
<xsl:text>–</xsl:text>
<xsl:call-template name="dashes">
<xsl:with-param name="content"
select="substring-after($content,'-')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$content"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
I hope this helps.
. . . . . . . . Ken
--
Contact us for world-wide XML consulting and instructor-led training
Free 5-hour lecture: http://www.CraneSoftwrights.com/links/udemy.htm
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
G. Ken Holman mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Google+ profile: https://plus.google.com/116832879756988317389/about
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--~------------------------------------------------------------------
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>
--~--