We have to migrate from Saxon 8 to Saxon 9 B. In the XSLT code we use Java HashMap classes for caching purposes.

In Saxon 8 we could put an XSLT node into the hash list and retrieve its value afterwards. However, if try this on Sasxon 9 B I get as result: net.sf.saxon.tinytree.TinyElementImpl@1ae04000


Below you find a small test program to reproduce this effect (Note: the same mechanism works for simple types):


<?xml version="1.0" encoding="UTF-8"?>

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"




               <xsl:variable name="CACHE" select="cache:new()"/>


               <xsl:template match="/">


                              <xsl:variable name="type" as="node()"><x y="a"/></xsl:variable>

                              <xsl:variable name="id" as="xs:string">testid</xsl:variable>


                              <xsl:variable name="put" select="cache:put($CACHE, $id, $type)"/>

                              <xsl:message>put=<xsl:sequence select="$put"/></xsl:message>

                              <xsl:variable name="get" select="cache:get($CACHE, $id)"/>

                              <xsl:message>get=<xsl:sequence select="$get"/> (id=<xsl:value-of select="$id"/>)</xsl:message>


                              <xsl:message>Clearing CACHE <xsl:value-of select="cache:clear($CACHE)"/></xsl:message>





                              get=net.sf.saxon.tinytree.TinyElementImpl@1ae04000 (id=testid)

                              Clearing CACHE