This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Converting logical <em>s to physical <i>s (nesting problem)


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]