You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xalan.apache.org by Stephen Suen <st...@gmail.com> on 2006/03/30 11:12:08 UTC

element-available failed for the extension which not actually used

Function element-available failed for the extension which not actually used.
Sometimes, it causes NullPointerException, and sometimes just returns false.
Here's the stylesheet caused the problem:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:redirect="http://xml.apache.org/xalan/redirect"
  xmlns:xalanredirect="org.apache.xalan.xslt.extensions.Redirect"
  extension-element-prefixes="xalanredirect redirect"
  version="1.0">

<xsl:template match="/">
  <xsl:message>
    <xsl:text>XSL Vendor: </xsl:text>
    <xsl:value-of select="system-property('xsl:vendor')"/>
  </xsl:message>

  <xsl:choose>
    <xsl:when test="element-available('xalanredirect:write')">
      <xsl:message>
        <xsl:text>xalanredirect:write available</xsl:text>
        <xalanredirect:write file="dummy1.xml"/> <!-- **** -->
      </xsl:message>
    </xsl:when>
    <xsl:otherwise>
      <xsl:message>
        <xsl:text>xalanredirect:write NOT available</xsl:text>
      </xsl:message>
    </xsl:otherwise>
  </xsl:choose>

  <xsl:choose>
    <xsl:when test="element-available('redirect:write')">
      <xsl:message>
        <xsl:text>redirect:write available</xsl:text>
      </xsl:message>
      <redirect:write file="dummy2.xml"/> <!-- **** -->
    </xsl:when>
    <xsl:otherwise>
      <xsl:message>
        <xsl:text>redirect:write NOT available</xsl:text>
      </xsl:message>
    </xsl:otherwise>
  </xsl:choose>

</xsl:template>

</xsl:stylesheet>

Removing any one of the two lines indicated by <!-- **** -->, will cause
the corresponding element-available test to fail. Here's the command line:

E:\xslt>SET CLASSPATH=E:\apache\xalan-j_2_7_0\serializer.jar;E:\apache\xalan-j_2
_7_0\xalan.jar;E:\apache\xalan-j_2_7_0\xercesImpl.jar;E:\apache\xalan-j_2_7_0\xm
l-apis.jar

E:\xslt>java -Duser.language=en org.apache.xalan.xslt.Process -in index.xml -xsl
 style.xsl
file:///E:/xslt/style.xsl; Line #10; Column #16; XSL Vendor: Apache Software Fou
ndation
file:///E:/xslt/style.xsl; Line #17; Column #20; xalanredirect:write available
file:///E:/xslt/style.xsl; Line #36; Column #20; redirect:write NOT available
<?xml version="1.0" encoding="UTF-8"?>

If both lines removed, transforming will fail:

E:\xslt>SET CLASSPATH=E:\apache\xalan-j_2_7_0\serializer.jar;E:\apache\xalan-j_2
_7_0\xalan.jar;E:\apache\xalan-j_2_7_0\xercesImpl.jar;E:\apache\xalan-j_2_7_0\xm
l-apis.jar

E:\xslt>java -Duser.language=en org.apache.xalan.xslt.Process -in index.xml -xsl
 style.xsl
file:///E:/xslt/style.xsl; Line #10; Column #16; XSL Vendor: Apache Software Fou
ndation

file:///E:/xslt/style.xsl; Line #16; Column #63; XSLT Error (javax.xml.transform
.TransformerException): Unknown error in XPath.
Exception in thread "main" java.lang.RuntimeException: Unknown error in XPath.
        at org.apache.xalan.xslt.Process.doExit(Process.java:1153)
        at org.apache.xalan.xslt.Process.main(Process.java:1126)

I'm using jdk1.5.0_04 with xalan-j_2_7_0.

Is this a bug of Xalan?  I searched the bug database, but nothing
found about this.
Should I report it?

--
Stephen Suen
stephen.suen@gmail.com

Re: element-available failed for the extension which not actually used

Posted by Erin Harris <eh...@ca.ibm.com>.
Hi Stephen,

This does look like a bug and I couldn't find anything on the bug database 
either.  Please open a new jira issue against the XalanJ2 project: 
http://issues.apache.org/jira

Thanks.

Erin Harris





"Stephen Suen" <st...@gmail.com> 
03/30/2006 04:12 AM
Please respond to
stephen.suen


To
xalan-j-users <xa...@xml.apache.org>
cc

Subject
element-available failed for the extension which not actually used






Function element-available failed for the extension which not actually 
used.
Sometimes, it causes NullPointerException, and sometimes just returns 
false.
Here's the stylesheet caused the problem:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:redirect="http://xml.apache.org/xalan/redirect"
  xmlns:xalanredirect="org.apache.xalan.xslt.extensions.Redirect"
  extension-element-prefixes="xalanredirect redirect"
  version="1.0">

<xsl:template match="/">
  <xsl:message>
    <xsl:text>XSL Vendor: </xsl:text>
    <xsl:value-of select="system-property('xsl:vendor')"/>
  </xsl:message>

  <xsl:choose>
    <xsl:when test="element-available('xalanredirect:write')">
      <xsl:message>
        <xsl:text>xalanredirect:write available</xsl:text>
        <xalanredirect:write file="dummy1.xml"/> <!-- **** -->
      </xsl:message>
    </xsl:when>
    <xsl:otherwise>
      <xsl:message>
        <xsl:text>xalanredirect:write NOT available</xsl:text>
      </xsl:message>
    </xsl:otherwise>
  </xsl:choose>

  <xsl:choose>
    <xsl:when test="element-available('redirect:write')">
      <xsl:message>
        <xsl:text>redirect:write available</xsl:text>
      </xsl:message>
      <redirect:write file="dummy2.xml"/> <!-- **** -->
    </xsl:when>
    <xsl:otherwise>
      <xsl:message>
        <xsl:text>redirect:write NOT available</xsl:text>
      </xsl:message>
    </xsl:otherwise>
  </xsl:choose>

</xsl:template>

</xsl:stylesheet>

Removing any one of the two lines indicated by <!-- **** -->, will cause
the corresponding element-available test to fail. Here's the command line:

E:\xslt>SET 
CLASSPATH=E:\apache\xalan-j_2_7_0\serializer.jar;E:\apache\xalan-j_2
_7_0\xalan.jar;E:\apache\xalan-j_2_7_0\xercesImpl.jar;E:\apache\xalan-j_2_7_0\xm
l-apis.jar

E:\xslt>java -Duser.language=en org.apache.xalan.xslt.Process -in 
index.xml -xsl
 style.xsl
file:///E:/xslt/style.xsl; Line #10; Column #16; XSL Vendor: Apache 
Software Fou
ndation
file:///E:/xslt/style.xsl; Line #17; Column #20; xalanredirect:write 
available
file:///E:/xslt/style.xsl; Line #36; Column #20; redirect:write NOT 
available
<?xml version="1.0" encoding="UTF-8"?>

If both lines removed, transforming will fail:

E:\xslt>SET 
CLASSPATH=E:\apache\xalan-j_2_7_0\serializer.jar;E:\apache\xalan-j_2
_7_0\xalan.jar;E:\apache\xalan-j_2_7_0\xercesImpl.jar;E:\apache\xalan-j_2_7_0\xm
l-apis.jar

E:\xslt>java -Duser.language=en org.apache.xalan.xslt.Process -in 
index.xml -xsl
 style.xsl
file:///E:/xslt/style.xsl; Line #10; Column #16; XSL Vendor: Apache 
Software Fou
ndation

file:///E:/xslt/style.xsl; Line #16; Column #63; XSLT Error 
(javax.xml.transform
.TransformerException): Unknown error in XPath.
Exception in thread "main" java.lang.RuntimeException: Unknown error in 
XPath.
        at org.apache.xalan.xslt.Process.doExit(Process.java:1153)
        at org.apache.xalan.xslt.Process.main(Process.java:1126)

I'm using jdk1.5.0_04 with xalan-j_2_7_0.

Is this a bug of Xalan?  I searched the bug database, but nothing
found about this.
Should I report it?

--
Stephen Suen
stephen.suen@gmail.com