Martin Honnen created XALANJ-2809:
-------------------------------------

             Summary: XPTY0004 when using fold-left and XSLT defined function, 
followed by java.lang.NullPointerException
                 Key: XALANJ-2809
                 URL: https://issues.apache.org/jira/browse/XALANJ-2809
             Project: XalanJ2
          Issue Type: Bug
      Security Level: No security risk; visible to anyone (Ordinary problems in 
Xalan projects.  Anybody can view the issue.)
          Components: transformation, Xalan, Xalan-CmdLine, Xalan-interpretive, 
XPath-function
    Affects Versions: The Latest Development Code
         Environment: Java 8, Windows 11
            Reporter: Martin Honnen
         Attachments: fold-left-seq-of-stylesheets-transform4.xsl, 
pass-document-node-to-xslt-function-test1.xsl, sample1.xml, sheet1.xsl, 
sheet2.xsl, sheet3.xsl

This is a bug report against the XSLT 3.0 development branch of Xalan.

I am still trying to use the function fold-left with some XSLT defined function 
but run into a strange error "XPTY0004 Function call argument at position 1 for 
function

{http://example.com/mf}

identity(), doesn't match the declared parameter type node()" followed by a 
java.lang.NullPointerException.
{code:xml}
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  version="3.0"
  xmlns:xs="http://www.w3.org/2001/XMLSchema";
  xmlns:mf="http://example.com/mf";
  exclude-result-prefixes="xs mf">

  <xsl:output method="xml" indent="yes"/>

  <xsl:function name="mf:identity" as="node()">
    <xsl:param name="node" as="node()"/>
    <xsl:sequence select="$node"/>
  </xsl:function>

  <xsl:template match="/">
    <xsl:copy>
      <xsl:sequence select="fold-left(//*, (), function($a, $n) { ($a, 
mf:identity($n)) })"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>
{code}
Run that against any XML input and you will get the XPTY0004 for each element 
node in the input followed by the NullPointerException.

 

The code runs with with Saxon HE 12.5 Java as well as SaxonJS so I think it is 
clean and proper XSLT 3.

 

The shown code is a reduced test case whether I can get any node passed from 
fold-left to an XSLT defined function, my real use case is using fold-left to 
chain calls of the transform function, as I get the same error "XPTY0004 : 
Function call argument at position 1 for function 
\{http://example.com/mf}transform-node(), doesn't match the declared parameter 
type node()" there I hope if the simple test case can be fixed the real use 
case also works.

For completeness I tried to attach the real use as well but somehow attaching 
currently fails. I will try to attach the file later after I have created the 
bug issue.

 

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to