Can anyone recommend a workaround for this problem involving parameters to func:func functions?

I find it near unbearable to work with string lists in XSLT with functions and node-sets.

Thanks in advance!

$ ./xbug

xalan-bug.xsl; Line #26; Column #89; XSLT Error (javax.xml.transform.TransformerException): Variable accessed before it is bound!


$ cat ./xbug
java -Xbootclasspath/p:xalan-j_2_5_2/bin/xalan.jar -Xbootclasspath/p:xalan-j_2_5_2/bin/xercesImpl.jar -Xbootclasspath/p:xalan-j_2_5_2/bin/xml-apis.jar org.apache.xalan.xslt.Process -XSL xalan-bug.xsl -IN xalan-bug.xsl -OUT junk.html


$ cat xalan-bug.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
    xmlns:func="http://exslt.org/functions";
    extension-element-prefixes="func"
    xmlns:my="http://www.prescod.net/xslt/functions";
    xmlns:xalan="http://xml.apache.org/xalan";
    version="1.0">

    <xsl:template name="wrapStringInElement">
        <xsl:param name="status-list"/>
        <xsl:message><xsl:value-of select="$status-list"/></xsl:message>
    </xsl:template>

    <func:function name="my:stringToNode">
        <xsl:param name="statusList"/>
        <xsl:variable name="dummy">
            <xsl:call-template name="wrapStringInElement">
                <!-- This next line fails: -->
                <xsl:with-param name="status-list" select="$statusList"/>
            </xsl:call-template>
        </xsl:variable>
        <func:result select="'blah'"/>
    </func:function>

<xsl:template match="/">
<xsl:variable name="string-as-element" select="my:stringToNode('a b c d e f')"/>
</xsl:template>


</xsl:stylesheet>

 Paul Prescod




Reply via email to