You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xalan.apache.org by Douglas Conklin <do...@nightfire.com> on 2002/02/20 03:36:22 UTC
problem with the position function
Hi all,
I am having a problem with the position() function when processing with
Xalan-J 2.2.0.
In one particular usage of position() against a series of nodes, the
position() function always returns 0.
when processing with Xalan-J 1.0.1 the same application of the position
function returns the appropriate number.
I looked in the Xalan-j 2.2.0 docs / release notes / bug list, as well
as searched this mailing list, and I haven't seen anything like this.
Is this a tightening of processor against the XSL spec, or is this a bug
in the processor?
TIA.
easy,
douglas d
Here are a small example stylesheet, input xml, Xalan 1.0.1 output, and
Xalan 2.2.0 output.
Note that when I remove the -1 from <xsl:value-of
select="position()-1"/> so that it is <xsl:value-of select="position()"/>,
the numbers are all 0, so it isn't the addition that is failing.
_________________________________
xsl
_________________________________
<?xml version="1.0"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<Request>
<xsl:apply-templates/>
</Request>
</xsl:template>
<xsl:template match="directorycontainer">
<directorycontainer type="container">
<directory>
<xsl:apply-templates select="directory"/>
</directory>
</directorycontainer>
</xsl:template>
<xsl:template match="directory">
<xsl:apply-templates>
<xsl:with-param name="index">
<xsl:value-of select="position()-1"/>
</xsl:with-param>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="directory/*">
<xsl:param name="index"/>
<xsl:variable name="field">
<xsl:value-of select="name()"/>
</xsl:variable>
<xsl:variable name="field_index">
<xsl:value-of select="concat($field,'_',$index)"/>
</xsl:variable>
<xsl:element name="{$field_index}">
<xsl:attribute name="value">
<xsl:value-of select="@value"/>
</xsl:attribute>
</xsl:element>
</xsl:template>
</xsl:transform>
_________________________________
input xml
_________________________________
<Request>
<directorycontainer type="container">
<directory>
<A value="a"/>
</directory>
<directory>
<B value="b"/>
</directory>
<directory>
<C value="c"/>
</directory>
</directorycontainer>
</Request>
_________________________________
Xalan 1.0.1 output XML
(what I was getting and would like to get)
_________________________________
<?xml version="1.0" encoding="UTF-8"?>
<Request>
<directorycontainer type="container">
<directory>
<A_0 value="a"/>
<B_1 value="b"/>
<C_2 value="c"/>
</directory>
</directorycontainer>
</Request>
_________________________________
Xalan 2.2.0 output XML
(what I get now which I don't like)
_________________________________
<?xml version="1.0" encoding="UTF-8"?>
<Request>
<directorycontainer type="container"><directory>
<A_-1 value="a"/>
<B_-1 value="b"/>
<C_-1 value="c"/>
</directory></directorycontainer>
</Request>