Thomas, I am very concerned about this bug, but have not been able to
replicate any problems with the current code.
I ran the following test tonight, but it did not reveal an problems with
recursive parameter evaluation. It's very possible that I misunderstand
the bug. I know you are busy, but any help you can give us to get this
resolved would be appreciated. It's possible, even likely, that this is
related to the extension mechanism. Gary, have you seen any problems with
this area?
==== input XML ===
<?xml version="1.0"?>
<doc id="id0">
<a id="id1">
*id1*
<a id="id2">*id2*
<a id="id3">*id3*</a>
<b id="id4">*id4*</b>
<c id="id5">*id5*</c>
</a>
<b id="id6">*id6*</b>
<c id="id7">*id7*</c>
</a>
<b id="id8">
*id8*
<a id="id9">*id9*</a>
<b id="id10">*id10*
<a id="id11">*id11*</a>
<b id="id12">*id12*</b>
<c id="id13">*id13*</c>
</b>
<c id="id14">*id14*</c>
</b>
<c id="id15">
*id15*
<a id="id16">*id16*</a>
<b id="id17">*id17*</b>
<c id="id18">*id18*
<a id="id19">*id19*</a>
</c>
</c>
</doc>
=== xsl test ===
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="no" encoding="UTF-8"/>
<xsl:param name="request" select="'OriginalDefaultRequestValue'"/>
<xsl:template match="/">
<xsl:apply-templates>
<xsl:with-param name="p1" select="$request"/>
<xsl:with-param name="p2" select="'root'"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="*">
<xsl:param name="p1" select="'#error1'"/>
<xsl:param name="p2" select="'#error2'"/>
<xsl:copy>
<xsl:apply-templates select="node()|@*">
<xsl:with-param name="p1" select="$request"/>
<xsl:with-param name="p2" select="@id"/>
</xsl:apply-templates>
<val>
<xsl:call-template name="dump-values">
<xsl:with-param name="p1" select="$request"/>
<xsl:with-param name="p2" select="$p2"/>
</xsl:call-template>
</val>
</xsl:copy>
</xsl:template>
<xsl:template match="@*">
<xsl:param name="p1" select="'#error1'"/>
<xsl:param name="p2" select="'#error2'"/>
<xsl:attribute name="Value">
<xsl:call-template name="dump-values">
<xsl:with-param name="p1" select="$p1"/>
<xsl:with-param name="p2" select="concat('id=', string($p2))"/>
</xsl:call-template>
</xsl:attribute>
</xsl:template>
<xsl:template name="dump-values">
<xsl:param name="p1" select="'#error1'"/>
<xsl:param name="p2" select="'#error2'"/>
<xsl:value-of select="$p1"/>, <xsl:value-of select="$p2"/>
</xsl:template>
</xsl:stylesheet>
=== result (if you don't pass it a param) ===
<?xml version="1.0" encoding="UTF-8"?>
<doc Value="OriginalDefaultRequestValue, id=id0">
<a Value="OriginalDefaultRequestValue, id=id1">
*id1*
<a Value="OriginalDefaultRequestValue, id=id2">*id2*
<a Value="OriginalDefaultRequestValue, id=id3">
*id3*<val>OriginalDefaultRequestValue, id2</val></a>
<b Value="OriginalDefaultRequestValue, id=id4">
*id4*<val>OriginalDefaultRequestValue, id2</val></b>
<c Value="OriginalDefaultRequestValue, id=id5">
*id5*<val>OriginalDefaultRequestValue, id2</val></c>
<val>OriginalDefaultRequestValue, id1</val></a>
<b Value="OriginalDefaultRequestValue, id=id6">
*id6*<val>OriginalDefaultRequestValue, id1</val></b>
<c Value="OriginalDefaultRequestValue, id=id7">
*id7*<val>OriginalDefaultRequestValue, id1</val></c>
<val>OriginalDefaultRequestValue, id0</val></a>
<b Value="OriginalDefaultRequestValue, id=id8">
*id8*
<a Value="OriginalDefaultRequestValue, id=id9">
*id9*<val>OriginalDefaultRequestValue, id8</val></a>
<b Value="OriginalDefaultRequestValue, id=id10">*id10*
<a Value="OriginalDefaultRequestValue, id=id11">
*id11*<val>OriginalDefaultRequestValue, id10</val></a>
<b Value="OriginalDefaultRequestValue, id=id12">
*id12*<val>OriginalDefaultRequestValue, id10</val></b>
<c Value="OriginalDefaultRequestValue, id=id13">
*id13*<val>OriginalDefaultRequestValue, id10</val></c>
<val>OriginalDefaultRequestValue, id8</val></b>
<c Value="OriginalDefaultRequestValue, id=id14">
*id14*<val>OriginalDefaultRequestValue, id8</val></c>
<val>OriginalDefaultRequestValue, id0</val></b>
<c Value="OriginalDefaultRequestValue, id=id15">
*id15*
<a Value="OriginalDefaultRequestValue, id=id16">
*id16*<val>OriginalDefaultRequestValue, id15</val></a>
<b Value="OriginalDefaultRequestValue, id=id17">
*id17*<val>OriginalDefaultRequestValue, id15</val></b>
<c Value="OriginalDefaultRequestValue, id=id18">*id18*
<a Value="OriginalDefaultRequestValue, id=id19">
*id19*<val>OriginalDefaultRequestValue, id18</val></a>
<val>OriginalDefaultRequestValue, id15</val></c>
<val>OriginalDefaultRequestValue, id0</val></c>
<val>OriginalDefaultRequestValue, root</val></doc>
-scott
Thomas2.Maesing
@bgs-ag.de To: [EMAIL PROTECTED]
cc: (bcc: Scott Boag/CAM/Lotus)
06/22/2001 Subject: Antwort: Re: Antwort: Re:
Antwort: Re: Antwort: [Bug 2124] -
05:39 AM Status of SAXSource is changed in Xalan
2.1.0
Please respond
to xalan-dev
Hi Scott,
with the last developer snapshot it works now.
I have found a problem with the Extension Functions. Because I do not know
wether you have a test case for such a problem
I will just report it:
A stylesheet is attached. There is the following instruction:
<xsl:if test="string(req:getParameter($request, string(@id)))!=''">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:value-of select="req:getParameter($request, string(@id))"/>
</xsl:copy>
</xsl:if>
The result contains at each invocation position of getParameter the return
value of the first getParameter($request, string(@id)) invocation.
The getParameter behaves like the getParameter method form servlet request.
With Xalan-j_2_1_0 and Saxons it works fine.
If you need a demo servlet let me know. But I have no time for it until
next week.
Regards
Thomas
(See attached file: DataEntry.xslt)