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]

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, &apos;\n%s: %d: %s:%s&apos;)"' />

> 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


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