[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Edit text-nodes with XSLT 2.0

Subject: Re: Edit text-nodes with XSLT 2.0
From: Evan Lenz <evan@xxxxxxxxxxxx>
Date: Fri, 07 Apr 2006 15:47:58 -0700
xslt text node
Michael Kay wrote:
<xsl:template match="text()"> <!-- in the text node the
replacement of characters with font tags is done-->
<xsl:choose>
<xsl:when test="not(string(.))" />
<!-- test if
textcontent is empty -->
<xsl:otherwise>
<xsl:call-template name="find_char1" >
Some more stuff ...
</xsl:otherwise> <!-- end textcontent is not empty
-->
</xsl:choose>
</xsl:template>

Incidentally, when I see a template rule whose body consists entirely of an xsl:choose, my preference is always to split it into one rule for each branch of the choose:

<xsl:template match="text()[not(string(.))]"/>

<xsl:template match="text()[string(.)]">
  <xsl:call-template name="find_char1"  >
  Some more stuff ...
</xsl:template>

This would also fix the priorities..
Except in this case string(.) is always going to return true for a text node, so the other rule will never get invoked. (You can't have an empty text node.) The simplification here should just be to replace the whole xsl:choose instruction with what is currently the contents of xsl:otherwise:

<xsl:template match="text()">
 <xsl:call-template name="find_char1">
 Some more stuff ...
</xsl:template>

Then add something like priority="1". Perversely, you could also change the pattern just to get a higher default priority, like text()[true()]. I wouldn't recommend that of course, but text()[string(.)] is effectively the same thing, so that's what made me think of it :-)

Alternatively, you could modify the original rule so that it doesn't apply to text nodes:

<xsl:template match="@* | * | comment() | processing-instruction()">
 <xsl:copy>
   <xsl:apply-templates select="@*|node()"/>
 </xsl:copy>
</xsl:template>

But I do completely agree with Michael's point, which is to favor template rules over explicit conditionals when possible :-)

Evan

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.