I have installed latest versions on FC2. Problem still persists - short self-contained example files attached.
[EMAIL PROTECTED] BUGS]$ xsltproc -V Using libxml 20618, libxslt 10113 and libexslt 811 xsltproc was compiled against libxml 20618, libxslt 10113 and libexslt 811 libxslt 10113 was compiled against libxml 20618 libexslt 811 was compiled against libxml 20618 [EMAIL PROTECTED] BUGS]$ rpm -q libxml2 libxslt libxml2-2.6.18-1 libxslt-1.1.13-1 [EMAIL PROTECTED] BUGS]$ ls -l total 12 -rw-rw-r-- 1 miket miket 165 Mar 20 17:49 error_output.xml -rw-rw-r-- 1 miket miket 1499 Mar 20 17:45 tab-idx.xml -rwxr-xr-x 1 miket miket 1635 Mar 20 17:48 xpath.xsl
Attached files show the error.
Running
xsltproc xpath.xsl tab-idx.xml
produces:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <output>
3 <span>Previous Table (ID=3)</span>
4 <span>Previous TABLE (ID=2)</span>
5 <span>Previous TABLE (ID=2)</span>
6 </output>Changing line #20 in xpath.xsl from:
20 <xsl:variable name='TabPrev1' select='( ($XTAB/preceding-sibling::TABLE[1]) | ($XIDX/TABLE[last()]) )[1]'/>
to
20 <xsl:variable name='TabPrev1' select='( ($XTAB/preceding-sibling::TABLE[1]) | ($XIDX/TABLE[$TOT]) )[1]'/>
and then running
xsltproc xpath.xsl tab-idx.xml
produces:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <output>
3 <span>Previous Table (ID=3)</span>
4 <span>Previous TABLE (ID=3)</span>
5 <span>Previous TABLE (ID=3)</span>
6 </output>
Let me know if further info required.
Mike
Daniel Veillard wrote:
On Sun, Mar 20, 2005 at 01:59:54PM +0000, Mike Trotman wrote:
[...]Hi.
I have a strange (=incorrect+weird) behaviour when using libxml2 via xsltproc (and Perl XML:::LibXML/LibXSLT/AxKit)
It looks like using the 'last()' positional function corrupts a nodeset - or something more subtle
- which also affect a subsequent Xpath match!!
(and I don't think I'm doing anything stupid.)
I haven't managed to find an FC2 version of the latest libxml2 yet - but don't see this listed in any bug fixes.
1/ use the latest version, 2.6.18 and libxslt-1.1.13 . To use them on
FC2 grab the src.rpm from ftp://xmlsoft.org/ and use rpm --rebuild libxml2-2.6.18-1.src.rpm and similar for libxslt.
2/ if the problem persists provide full reproductible test case using
xsltproc, as mail or bugzilla attachements of the stylesheet and
the xml input showing the problem. Debugging partial stylesheets
is not possible,
thanks,
Daniel
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:output method="xml" encoding="UTF-8" omit-xml-declaration='no' media-type='text/html' indent='yes'/>
<xsl:template match="/"> <output> <xsl:apply-templates select='/XMLTABS/SECTIONS/SECTION/TABLES/TABLE[4]'> <xsl:with-param name='XIDX' select='/XMLTABS/SECTIONS/SECTION/TABLES'/> </xsl:apply-templates> </output> </xsl:template> <!-- ============================================================ --> <xsl:template match='TABLE' > <xsl:param name='XIDX' select='/..'/> <xsl:variable name='TOT' select='count($XIDX/TABLE)'/> <xsl:variable name='XTAB' select='$XIDX/[EMAIL PROTECTED] = current()/@ID]'/> <xsl:variable name='TIDX' select='count($XTAB/preceding-sibling::TABLE)+1'/> <xsl:variable name='TabPrev' select='( $XIDX/TABLE[$TIDX - 1] | $XIDX/TABLE[$TOT] )[1]'/> <xsl:variable name='TabPrev1' select='( ($XTAB/preceding-sibling::TABLE[1]) | ($XIDX/TABLE[$TOT]) )[1]'/> <xsl:variable name='TabPrev2' select='( $XTAB/preceding-sibling::TABLE[1] | $XIDX/TABLE[$TOT] )[1]'/> <xsl:variable name='IDPrev' select='$TabPrev/@ID'/> <xsl:variable name='IDPrev1' select='$TabPrev1/@ID'/> <xsl:variable name='IDPrev2' select='$TabPrev1/@ID'/> <xsl:text> </xsl:text> <span>Previous Table (ID=<xsl:value-of select='$IDPrev'/>)</span><xsl:text> </xsl:text> <span>Previous TABLE (ID=<xsl:value-of select='$IDPrev1'/>)</span><xsl:text> </xsl:text> <span>Previous TABLE (ID=<xsl:value-of select='$IDPrev2'/>)</span><xsl:text> </xsl:text> </xsl:template> <!-- ============================================================ --> </xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?> <output> <span>Previous Table (ID=3)</span> <span>Previous TABLE (ID=2)</span> <span>Previous TABLE (ID=2)</span> </output>
<?xml version="1.0" encoding="UTF-8"?>
<XMLTABS version="0.1">
<SECTIONS>
<SECTION>
<TABLES>
<TABLE ID="1" tableno="0001"> </TABLE>
<TABLE ID="2" tableno="0002"> </TABLE>
<TABLE ID="3" tableno="0003"> </TABLE>
<TABLE ID="4" tableno="0004"> </TABLE>
<TABLE ID="5" tableno="0005"> </TABLE>
<TABLE ID="6" tableno="0006"> </TABLE>
<TABLE ID="7" tableno="0007"> </TABLE>
<TABLE ID="8" tableno="0008"> </TABLE>
<TABLE ID="8M" tableno="0009"> </TABLE>
<TABLE ID="9M" tableno="0010"> </TABLE>
<TABLE ID="10" tableno="0011"> </TABLE>
<TABLE ID="11" tableno="0012"> </TABLE>
<TABLE ID="12M" tableno="0013"> </TABLE>
<TABLE ID="13M" tableno="0014"> </TABLE>
<TABLE ID="14" tableno="0015"> </TABLE>
<TABLE ID="15" tableno="0016"> </TABLE>
<TABLE ID="16" tableno="0017"> </TABLE>
<TABLE ID="17" tableno="0018"> </TABLE>
<TABLE ID="18" tableno="0019"> </TABLE>
<TABLE ID="19" tableno="0020"> </TABLE>
<TABLE ID="20" tableno="0021"> </TABLE>
<TABLE ID="21" tableno="0022"> </TABLE>
<TABLE ID="22" tableno="0023"> </TABLE>
<TABLE ID="23" tableno="0024"> </TABLE>
<TABLE ID="24" tableno="0025"> </TABLE>
<TABLE ID="25" tableno="0026"> </TABLE>
<TABLE ID="26" tableno="0027"> </TABLE>
<TABLE ID="27" tableno="0028"> </TABLE>
</TABLES>
</SECTION>
</SECTIONS>
</XMLTABS>
No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.308 / Virus Database: 266.7.4 - Release Date: 18/03/2005
_______________________________________________ xslt mailing list, project page http://xmlsoft.org/XSLT/ [email protected] http://mail.gnome.org/mailman/listinfo/xslt
