[xsl] Re: libxslt version changes RTF or exsl node-set sorting behavior

Subject: [xsl] Re: libxslt version changes RTF or exsl node-set sorting behavior
From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx>
Date: Sun, 1 Feb 2004 14:45:58 +0100
>   Well libxslt works for a lot of stuff, maybe you hit a problem
> nobody else hit or reported before. If it is not reported I cannot
> guess there is a problem, and we cannot fix it.

Unfortunately, my experience with libxslt is quite similar to that of David
Tolpin.

The latest problem was using this stylesheet:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
 xmlns:ext="http://exslt.org/common";
 exclude-result-prefixes="ext"
  >

  <xsl:output method="text"/>

 <xsl:key name="kdistNS" match="namespace" use="."/>

  <xsl:template match="/">
    <xsl:variable name="vrtfNamespaces">
      <xsl:apply-templates select="*">
        <xsl:with-param name="pNamespaces" select="/.."/>
      </xsl:apply-templates>
   </xsl:variable>

   <xsl:for-each
   select="ext:node-set($vrtfNamespaces)/*
                  [generate-id()
                  =
                   generate-id(key('kdistNS', .)[1])
                   ]">
     <xsl:value-of
      select="concat('&#xA;', substring-before(.,'|'),
                     ': ', substring-after(.,'|')
                     )"/>
   </xsl:for-each>
  </xsl:template>

  <xsl:template match="*">
    <xsl:for-each select=" namespace::*">
      <namespace>
        <xsl:value-of select="concat(name(), '|', .)"/>
      </namespace>
    </xsl:for-each>

    <xsl:apply-templates select="*"/>
  </xsl:template>
</xsl:stylesheet>

to transform this source xml document:

<test1>
  <foo:test xmlns:foo="bigrabbit" foo:gg="3"
            foo:hh="4">
    <bar xmlns:foo="littlerabbit"
         foo:squid="fish"/>
    <baz xmlns:hi="anothernamespace"
         hi:attr="value" />
  </foo:test>
  <p1:anc1 xmlns:p1="ns1">
    <p1:anc2 xmlns:p1="ns2">
      <p1:anc3 xmlns:p1="ns1" />
    </p1:anc2>
  </p1:anc1>
</test1>

As result I do not get any output from the transformation, but only these
messages:

Transformation failed.
Using libxml 20504, libxslt 10027 and libexslt 718
xsltproc was compiled against libxml 20504, libxslt 10027 and libexslt 718
libxslt 10027 was compiled against libxml 20504
libexslt 718 was compiled against libxml 20504
Parsing stylesheet (Untitled) took 0 ms
Parsing document (Untitled) took 0 ms
Running stylesheet and saving result took 0 ms


I am aware of the fact that the versions I have of libxml/libxslt are
probably not the latest one available and I hope that this transformation
runs OK with the newest versions.

The result from MSXML3 (with MS native implementation of the node-set()
extension), MSXML4,  dotNet XslTransform(), Saxon 6.5.3, JD, XalanJ 2.4.1
and 4xslt is:

xml: http://www.w3.org/XML/1998/namespace
foo: bigrabbit
foo: littlerabbit
hi: anothernamespace
p1: ns1
p1: ns2


Cheers,

Dimitre Novatchev,
FXSL developer,

http://fxsl.sourceforge.net/ -- the home of FXSL
Resume: http://fxsl.sf.net/DNovatchev/Resume/Res.html




 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread