Hi Alain,
   The reason, why xsl:for-each select="$value" is working with
XMLSpy, is because XMLSpy is using a XSLT 2.0 engine, which treats
$value as a node-set.

Whereas, $value if a RTF (result tree fragment) in XSLT 1.0. An
expression, select="$value" will give an error, as you just found,
with XSLT 1.0.

To make this work with Xalan-J, you need to use the xx:node-set
extension function. Please refer,
http://xml.apache.org/xalan-j/extensionslib.html#exslt for more
information in this regard.

So you would need to do something, like:
xx:node-set($value)

or perhaps,
xx:node-set($value)/*

xx:node-set($value) behaves similar to, a 2.0 $value

On Tue, Sep 8, 2009 at 9:29 PM, Alain Gilbert <agilb...@taleo.com> wrote:
> When I rewrite the addInlineText template as:
>
> <xsl:template name="addInlineText">
>  <xsl:param name="value" />
>  <fo:block>
>    <xsl:for-each select="$value" >
>      <xsl:copy/>
>      <xsl:apply-templates/>
>    </xsl:for-each>
>  </fo:block>
> </xsl:template>
>
> I do get the desired behavior with the Altova XSLT engine, built in the 
> XMLSpy product.
>
> However, when trying the same with Xalan, I get this error:
>  SystemID: print.xsl; Line#: 20; Column#: 33
>  org.apache.xpath.XPathException: Can not convert #RTREEFRAG to a NodeList!
>    at org.apache.xpath.objects.XObject.error(XObject.java:703)
>    at org.apache.xpath.objects.XObject.iter(XObject.java:406)
>    at org.apache.xpath.Expression.asIterator(Expression.java:250)
>    at 
> org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:333)
>
> Any help greatly appreciated,
> Alain Gilbert



-- 
Regards,
Mukul Gandhi

Reply via email to