[xsl] variables and inline tags

Subject: [xsl] variables and inline tags
From: Spencer Tickner <spencertickner@xxxxxxxxx>
Date: Wed, 4 May 2005 13:52:35 -0700
Having problems with variables, applying templates and parsing
strings. Been working on it all day and can't seem to wrap my mind
around it.

Here is my simplified xml:

<definition>
  <term>recognized</term>
  <def>, under the <em>Company Act</em></def>
</definition>

What I need to do is substring the def information when it starts with
a comma, ie:

with comma
<p class="def">"recognized", under the <em>Company Act</em></p>

without comma
<p class="def">"recognized" under the <em>Company Act</em></p>

Ok, there's the background. I'm having problems because I'm using a
variable to parse out the unwanted space in the with comma example
above, then to get the variable I use a value-of statement which
promptly drops the <em> tags. Any suggestions or advive would be
appreciated.


Here's my simplified xsl:

<!-- Defintion -->
<xsl:template match="definition" mode="contentsection">
	<p class="def">
	<xsl:choose>
	<xsl:when test="substring(def, 1, 1)=','">
		<strong>"<xsl:apply-templates
select="term"/>"</strong>,&#160;<xsl:variable name="uncommadef">
			<xsl:apply-templates select="def"/>
		</xsl:variable>

                 <!-- Problem is here -->
		<xsl:value-of select="substring($uncommadef, 2)"/>
	</xsl:when>
	<xsl:otherwise>
		<strong>"<xsl:apply-templates
select="term"/>"</strong>&#160;<xsl:apply-templates select="def"/>
	</xsl:otherwise>
	</xsl:choose>
	</p>
 </xsl:template>
 <xsl:template match="term">
 	<xsl:apply-templates select="text()|strong|em|sup|sub|u|insert|br|eacute"/>
 </xsl:template>
 <xsl:template match="def">
 	<xsl:apply-templates select="text()|strong|em|sup|sub|u|insert|br|eacute"/>
 </xsl:template>
<!-- End of Definition -->

Current Thread