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)



Reply via email to