xsl-list
[Top] [All Lists]

RE: effective boolean value of the result of an extension instruction

2005-03-07 15:43:19
The <xsl:variable> is either going to give you a run-time error, or it's
going to set the variable to a value of type java:java.sql.Connection.

The xsl:fallback gives fallback behavior if the sql:connect instruction
isn't recognized. If you want to handle a failure reported by the JDBC
database connection, you'll have to use saxon:try() (which is a Saxon-SA
extension function). Alternatively you could of course modify the
sql:connect source code - it's only really intended as a specimen
implementation.

Michael Kay
Saxonica Limited 

-----Original Message-----
From: Kevin Rodgers [mailto:kevin(_dot_)rodgers(_at_)ihs(_dot_)com] 
Sent: 07 March 2005 22:25
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] effective boolean value of the result of an 
extension instruction

I'm using Saxon's SQL extension in an XSLT 2.0 stylesheet.  
First I set
a variable to the JDBC connection, like this:

      <xsl:variable name="mb3-connection" 
as="java:java.sql.Connection"
         xmlns:java="http://saxon.sf.net/java-type";>
        <xsl:choose>
          <xsl:when test="element-available('sql:connect')">
            <sql:connect driver="{$sql-driver}" database="{$sql-url}"
                         user="{$sql-user}" 
password="{$sql-password}">
              <xsl:fallback>
                <xsl:message select="'SQL extension is not installed'"
                             terminate="yes"/>
              </xsl:fallback>
            </sql:connect>
          </xsl:when>
          <xsl:otherwise>
            <xsl:message select="'&lt;sql:connect&gt; is not 
available'"
                         terminate="yes"/>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:variable>

According to the documentation, the result is a value of type 
"external
object".  Later, when I reference it in a conditional expression:

  <xsl:value-of select="if ($mb3-connection)
                        then 
esd:curr-doc-num($mb3-connection, $relation)
                        else $relation"/>

Saxon reports:

  net.sf.saxon.trans.DynamicError: Effective boolean value is 
not defined for a sequence
  starting with an atomic value other than a boolean, number, 
or string

Is there a way to test the mb3-connection variable, or do the
<xsl:message terminate="yes"/> instructions in its declaration already
ensure that processing doesn't continue unless it was set 
successfully?

Thanks,
-- 
Kevin Rodgers


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



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