Package: xsltproc
Version: 1.1.22-1
Severity: normal

In order to produce a stylesheet from xml and a stylesheet one needs to use a 
namespace prefix other than xsl:.  This is typically turned into a useable 
stylesheet by using namespace-alias, unfortunately it doesn't do anything with 
xsltproc.


The following example produces the following error when trying to use the 
result stylesheet on another xml file:

compilation error: file test.xsl line 2 element stylesheet
xsltParseStylesheetProcess : document is not a stylesheet

Replacing <gconf:stylesheet xmlns:gconf="..."> with <xsl:stylesheet 
xmlns:gconf="..." xmlns:xsl="..."> (and corresponding closing tag), works.

An example stylesheet snippet:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                xmlns:gconf="output.xsl" >

  <xsl:namespace-alias stylesheet-prefix="gconf"
                       result-prefix="xsl" />
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="/">
    <gconf:stylesheet xmlns:gconf="http://www.w3.org/1999/GCONF/Transform";
                      xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                      version="1.0">
      <gconf:output method="xml" />
      <gconf:template match="/">
        <xsl:apply-templates select="gconf" />
      </gconf:template>
    </gconf:stylesheet>
  </xsl:template>
  <xsl:template match="/gconf">
   <gconf>
      <xsl:apply-templates />
    </gconf>
  </xsl:template>
  <xsl:template match="[EMAIL PROTECTED]">
    <xsl:element name="gconf:choose">
      <xsl:element name="gconf:when">
        <xsl:attribute name="test">not(<xsl:value-of select="name(.)" />[EMAIL 
PROTECTED]'<xsl:value-of select="@name" />'])</xsl:attribute>    
        <xsl:element name="{name(.)}">      
          <xsl:for-each select="@*">
            <xsl:attribute name="{name(.)}">
              <xsl:value-of select="." />
            </xsl:attribute>
          </xsl:for-each>
          <xsl:apply-templates />
        </xsl:element>   
        <xsl:element name="gconf:otherwise">


With some XML:

<gconf>
        <dir name="apps">
                <dir name="panel">
                        <dir name="applets">
                                <dir name="system_monitor_screen0">
                                        <dir name="prefs">
                                                <entry name="view_diskload" 
schema="/schemas/apps/multiload/prefs/view_diskload" type="bool" value="true">
                                                </entry>
                                                <entry name="view_cpuload" 
schema="/schemas/apps/multiload/prefs/view_cpuload" type="bool" value="true">
                                                </entry>
                                                <entry name="view_netload" 
schema="/schemas/apps/multiload/prefs/view_netload" type="bool" value="true">
                                                </entry>
                                        </dir>
                                </dir>
                        </dir>
                </dir>
        </dir>
</gconf>

And some of the output:

<?xml version="1.0"?>
<gconf:stylesheet xmlns:gconf="http://www.w3.org/1999/GCONF/Transform"; 
version="1.0">
  <gconf:output method="xml"/>
  <gconf:template match="/">
    <gconf xmlns:gconf="http://www.w3.org/1999/XSL/Transform";>
        <gconf:choose xmlns:gconf="output.xsl"><gconf:when test="not([EMAIL 
PROTECTED]'apps'])"><dir name="apps">
                <gconf:choose><gconf:when test="not([EMAIL 
PROTECTED]'panel'])"><dir name="panel">
                        <gconf:choose><gconf:when test="not([EMAIL 
PROTECTED]'general'])"><dir name="general">
                                <gconf:choose><gconf:when test="not([EMAIL 
PROTECTED]'applet_id_list'])"><entry name="applet_id_list" type="list" 
ltype="string">

                                        <li type="string">
                                                
<stringvalue>system_monitor_screen0</stringvalue>
                                        </li>   
                                        <li type="string">
                                                
<stringvalue>drive_mounter_screen0</stringvalue>


The proper behaviour is defined in XSLT section 7.1.1

-- System Information:
Debian Release: lenny/sid
  APT prefers testing
  APT policy: (500, 'testing'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.24-1-686 (SMP w/1 CPU core)
Locale: LANG=en_CA.UTF-8, LC_CTYPE=en_CA.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages xsltproc depends on:
ii  libc6                      2.7-6         GNU C Library: Shared libraries
ii  libgcrypt11                1.4.0-3       LGPL Crypto library - runtime libr
ii  libxml2                    2.6.31.dfsg-1 GNOME XML library
ii  libxslt1.1                 1.1.22-1      XSLT processing library - runtime 

xsltproc recommends no packages.

-- no debconf information



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to