[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] synthaxe pb with > in xsl


Subject: Re: [xsl] synthaxe pb with > in xsl
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Thu, 20 Mar 2003 14:13:03 +0000

Hi Lo,

> but when i create in java (with the dom libraries) the xsl dom tree,
> i don't succeed to write the xsl:if condition like this :
>
> .....
> If2.setAttribute("test","string-length('"+node+"') &gt; '5' ");
> where node is the name of the current node.

You're mixing up the *string*value* of the attribute (which is what
you set with .setAttribute() with the *serialised* value of the
attribute.

When you create an attribute using .setAttribute(), the second
argument is a string that is the value of the attribute. In this case,
you're setting the attribute to the value:

  string-length('Nuance') &gt; '5'

(Note that I'm not sure why you have the single quotes in there; I
don't think that you want them.)

If you serialised this string value as XML, you'd get:

  test="string-length('Nuance') &amp;gt; '5'"

Or, equivalently:

  test='string-length(&apos;Nuance&apos; &amp;gt; &apos;5&apos;'
  
When an & in a string value is serialised as XML, it gets serialised
as &amp;.

Consider the one that works:

> If2.setAttribute("test","string-length('"+node+"') > '5' ");

Here you're setting the value of the attribute to the string:

  string-length('Nuance') > '5'

When that gets serialised as XML, you might get:

  text="string-length('Nuance') &gt; '5'

The > in a string value is serialised using the entity reference &gt;.

(Note that this might not happen -- only &, < and whatever character
gets used as the quotes around the attribute value need to be
serialised using entity references. > never needs to be escaped,
though it can be.)

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread
Keywords