This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Converting logical <em>s to physical <i>s (nesting problem)
- From: Michael Stillwell <mjs at beebo dot org>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Fri, 18 Jan 2002 10:34:04 +1100
- Subject: [xsl] Converting logical <em>s to physical <i>s (nesting problem)
- Reply-to: xsl-list at lists dot mulberrytech dot com
How can I convert <em>s to <i>s, such that "nested" <em>s are either
italic or not italic as appropriate? That is, I want
<em>This is <em>emphasised</em>!</em>
to be converted into
<i>This is </i>emphasised<i>!</i>
The following almost works:
<xsl:template match="em">
<xsl:choose>
<xsl:when test="count(ancestor::em) mod 2 = 0">
<em><xsl:apply-templates/></em>
</xsl:when>
<xsl:otherwise>
</em><xsl:apply-templates/><em>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
failing only because the contents of the "otherwise" clause aren't
nested properly.
By the way, what's the best was to "pass through" unknown tags? I
currently use
<xsl:template match="*">
<xsl:element name="{name(.)}">
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
Michael
--
http://beebo.org
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list