You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by "Krishna (JIRA)" <xa...@xml.apache.org> on 2009/10/08 23:45:31 UTC

[jira] Created: (XALANJ-2507) dyn:evaluate() not working correctly when RTF is passed

dyn:evaluate() not working correctly when RTF is passed
-------------------------------------------------------

                 Key: XALANJ-2507
                 URL: https://issues.apache.org/jira/browse/XALANJ-2507
             Project: XalanJ2
          Issue Type: Bug
      Security Level: No security risk; visible to anyone (Ordinary problems in Xalan projects.  Anybody can view the issue.)
    Affects Versions: 2.7.1
         Environment: WindowsXP with cygwin, Java version: "1.6.0_15", xalan-j: 2.7.1
            Reporter: Krishna


When dyn:evaluate is used to process a node, something goes wrong when xalan-j
processor is used.  The same stylesheet works fine with other processors (i.e.
xsltproc, saxon6 etc).

The xsl segment that causes trouble is:
<xsl:for-each select="member">
	<xsl:variable name="Member" select="."/>
	<tr>
	<td><xsl:value-of select="name"/></td>
	<xsl:for-each select="../RoleTypes/*">
==>		<td><p/><xsl:value-of select="dyn:evaluate(concat('$Member/', name(.)))"/></td>
	</xsl:for-each>
	</tr>
</xsl:for-each>

The idea is to display data under <dev>, <qa>, and <doc> in tabular form like

name |  dev |  qa | doc |
-------------------------------
John   |  200 |      |         |
Paul   |  100 |       |         |
Max    |           | 60 |         |

But, when I use xalan-j, only the data pertaining to the first element under RoleTypes
(i.e. <dev> in this case) gets displayed, rest of the columns are blank.  I'm not that
comfortable with java to see where the problem is in the source code.  Just thought
I'd pass on this info.

Input XML content is:
<projectteam>
  <RoleTypes>
	  <dev/>
	  <qa/>
	  <doc/>
  </RoleTypes>
  <member>
    <name>John</name>
    <dev>200</dev>
  </member>
  <member>
    <name>Paul</name>
    <dev>100</dev>
  </member>
  <member>
    <name>Max</name>
    <qa>60</qa>
  </member>
  ...

Thanks

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-dev-help@xml.apache.org


[jira] Commented: (XALANJ-2507) dyn:evaluate() not working correctly when RTF is passed

Posted by "Henry Zongaro (JIRA)" <xa...@xml.apache.org>.
    [ https://issues.apache.org/jira/browse/XALANJ-2507?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12790758#action_12790758 ] 

Henry Zongaro commented on XALANJ-2507:
---------------------------------------

It looks like only the first use of a particular variable instance inside of dyn:evaluate is working - so in your example, $Member/dev returns the correct result, but it looks like the second and third references to each particular instance of $Member return empty node sets.

In your simple example, it would be possible to work around the problem so that it doesn't use the dyn:evaluate function at all:

<xsl:for-each select="member">
<xsl:variable name="Member" select="."/>
<tr>
<td><xsl:value-of select="name"/></td>
<xsl:for-each select="../RoleTypes/*">
<xsl:variable name="roleName" select="name(.)"/>
<td><p/><xsl:value-of select="$Member/*[name(.) = $roleName"/></td>
</xsl:for-each>
</tr>
</xsl:for-each>

Of course, that might not work in your particular stylesheet, if your usage of dyn:evaluate is more complex.

> dyn:evaluate() not working correctly when RTF is passed
> -------------------------------------------------------
>
>                 Key: XALANJ-2507
>                 URL: https://issues.apache.org/jira/browse/XALANJ-2507
>             Project: XalanJ2
>          Issue Type: Bug
>      Security Level: No security risk; visible to anyone(Ordinary problems in Xalan projects.  Anybody can view the issue.) 
>    Affects Versions: 2.7.1
>         Environment: WindowsXP with cygwin, Java version: "1.6.0_15", xalan-j: 2.7.1
>            Reporter: Krishna
>
> When dyn:evaluate is used to process a node, something goes wrong when xalan-j
> processor is used.  The same stylesheet works fine with other processors (i.e.
> xsltproc, saxon6 etc).
> The xsl segment that causes trouble is:
> <xsl:for-each select="member">
> 	<xsl:variable name="Member" select="."/>
> 	<tr>
> 	<td><xsl:value-of select="name"/></td>
> 	<xsl:for-each select="../RoleTypes/*">
> ==>		<td><p/><xsl:value-of select="dyn:evaluate(concat('$Member/', name(.)))"/></td>
> 	</xsl:for-each>
> 	</tr>
> </xsl:for-each>
> The idea is to display data under <dev>, <qa>, and <doc> in tabular form like
> name |  dev |  qa | doc |
> -------------------------------
> John   |  200 |      |         |
> Paul   |  100 |       |         |
> Max    |           | 60 |         |
> But, when I use xalan-j, only the data pertaining to the first element under RoleTypes
> (i.e. <dev> in this case) gets displayed, rest of the columns are blank.  I'm not that
> comfortable with java to see where the problem is in the source code.  Just thought
> I'd pass on this info.
> Input XML content is:
> <projectteam>
>   <RoleTypes>
> 	  <dev/>
> 	  <qa/>
> 	  <doc/>
>   </RoleTypes>
>   <member>
>     <name>John</name>
>     <dev>200</dev>
>   </member>
>   <member>
>     <name>Paul</name>
>     <dev>100</dev>
>   </member>
>   <member>
>     <name>Max</name>
>     <qa>60</qa>
>   </member>
>   ...
> Thanks

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-dev-help@xml.apache.org