Re: hoe to use "(" within a variable
Hi Andrew, > Can you highlight the differences of using the select attribute (over > rtf content) when using variables. > > Using this case as an example, > > <xsl:variable name"foo" select="sprintf(log_str, '\n%s: %d: %s:%s')"/> You mean: <xsl:variable name"foo" select='"sprintf(log_str, '\n%s: %d: %s:%s')"' /> > against: > > <xsl:variable name="foo">sprintf(log_str, '\n%s: %d: > %s:%s')</xsl:variable> > > As you have said one would require escaping of quotes, and the other > is technically a result-tree-fragment, but getting the value-of > produces the same results. > > What is best practice here? In my mind, best practice is that if you can set a variable directly to a string, number, boolean or node set then it's much better to do so than it is to go through a result tree fragment. When you use a result tree fragment, the processor has to create at least two new nodes (a root node and a text node); creating nodes and storing that is a *lot* more burdensome (takes up more processing time and memory) than storing the value directly. The result tree fragment needs to be converted to a string/number/boolean/node-set when you use it, which also takes time compared to using the value directly. Finally, I find it easy to mistakenly test variables with: <xsl:if test="$foo"> ... </xsl:if> which is always true for a result tree fragment, and wouldn't necessarily be for a string. Having to escape the quotes is a pain, but I think that "if you can, use the select attribute" is a heuristic that will generally stand you in good stead. Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format