xsl-list
[Top] [All Lists]

Re: Re: XPath 2.0: Problems with the two boolean constants true and false

2003-10-09 06:44:29
Hi Dimitre,

But if the Data Model were saying that 0 and 1 are not simply
"string representations" (note that I didn't use '0' and '1' in my
previous example but just 0 and 1 -- that is not the strins '0' and
'1') but that 0 and 1 are *the* two xs:boolean constants,

then

it would make difference as the result of evaluating a boolean
expression would be not a "representation" but a real (or native, or
genuine) boolean value.

Isn't it natural for a type to have its own genuine values and not
only a "representation"?

Of course. But that's what we have currently, isn't it? The result of
the expression:

  true() and false()

is a native xs:boolean value, false, not the string 'false'.

Perhaps you're finding problems because:

  <xsl:value-of select="true() and false()" />

generates a text node whose string value is the result of converting
the xs:boolean value false to a string (i.e. 'false')?

Perhaps you would be better off using:

  <xsl:sequence select="true() and false()" />

which actually adds the xs:boolean value false to the result sequence.

In other words, use a template along the lines of:

  <xsl:template name="And" match="test:*" as="xs:boolean">
    <xsl:param name="arg1" as="xs:boolean"/>
    <xsl:param name="arg2"  as="xs:boolean"/>
    <xsl:sequence select="$arg1 and $arg2"/>
  </xsl:template>

Note that here the template is declared to have an xs:boolean value as
its result; that declarations isn't completely necessary (it will
still have an xs:boolean value as its result without it), but it's
good practice.

(Returning the actual xs:boolean value should also be more efficient
since you're not having to create any nodes that way --
<xsl:value-of>, theoretically at least, creates a text node.)

Cheers,

Jeni

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


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



<Prev in Thread] Current Thread [Next in Thread>