[libxslt/f18] fix a regression in default namespace handling

Daniel Veillard veillard at fedoraproject.org
Tue Oct 9 03:02:52 UTC 2012


commit 27bad2b1423758fe0ebf0faba6384de2a07a2759
Author: Daniel Veillard <veillard at redhat.com>
Date:   Tue Oct 9 11:02:35 2012 +0800

    fix a regression in default namespace handling

 ...sion-Default-namespace-not-correctly-used.patch |  132 ++++++++++++++++++++
 libxslt.spec                                       |    7 +-
 2 files changed, 138 insertions(+), 1 deletions(-)
---
diff --git a/libxslt-Fix-regression-Default-namespace-not-correctly-used.patch b/libxslt-Fix-regression-Default-namespace-not-correctly-used.patch
new file mode 100644
index 0000000..b1d6e44
--- /dev/null
+++ b/libxslt-Fix-regression-Default-namespace-not-correctly-used.patch
@@ -0,0 +1,132 @@
+From 70213d9c9a86adac841247b249dc188ba2aab3db Mon Sep 17 00:00:00 2001
+From: Nick Wellnhofer <wellnhofer at aevum.de>
+Date: Fri, 28 Sep 2012 21:04:39 +0200
+Subject: [PATCH] Fix regression: Default namespace not correctly used
+To: libvir-list at redhat.com
+
+https://bugzilla.gnome.org/show_bug.cgi?id=684564
+
+Signed-off-by: Daniel Veillard <veillard at redhat.com>
+---
+ libxslt/transform.c       | 14 ++++++++------
+ tests/docs/Makefile.am    |  1 +
+ tests/docs/bug-179.xml    |  1 +
+ tests/general/Makefile.am |  1 +
+ tests/general/bug-179.out |  9 +++++++++
+ tests/general/bug-179.xsl | 24 ++++++++++++++++++++++++
+ 6 files changed, 44 insertions(+), 6 deletions(-)
+ create mode 100644 tests/docs/bug-179.xml
+ create mode 100644 tests/general/bug-179.out
+ create mode 100644 tests/general/bug-179.xsl
+
+diff --git a/libxslt/transform.c b/libxslt/transform.c
+index de2ef3c..35701de 100644
+--- a/libxslt/transform.c
++++ b/libxslt/transform.c
+@@ -4075,7 +4075,7 @@ xsltElement(xsltTransformContextPtr ctxt, xmlNodePtr node,
+         } else if (xmlStrEqual(prefix, BAD_CAST "xml")) {
+             prefix = NULL;
+         }
+-    } else if (prefix != NULL) {
++    } else {
+ 	xmlNsPtr ns;
+ 	/*
+ 	* SPEC XSLT 1.0:
+@@ -4090,11 +4090,13 @@ xsltElement(xsltTransformContextPtr ctxt, xmlNodePtr node,
+ 	    * TODO: Check this in the compilation layer in case it's a
+ 	    * static value.
+ 	    */
+-            xsltTransformError(ctxt, NULL, inst,
+-                "xsl:element: The QName '%s:%s' has no "
+-                "namespace binding in scope in the stylesheet; "
+-                "this is an error, since the namespace was not "
+-                "specified by the instruction itself.\n", prefix, name);
++            if (prefix != NULL) {
++                xsltTransformError(ctxt, NULL, inst,
++                    "xsl:element: The QName '%s:%s' has no "
++                    "namespace binding in scope in the stylesheet; "
++                    "this is an error, since the namespace was not "
++                    "specified by the instruction itself.\n", prefix, name);
++            }
+ 	} else
+ 	    nsName = ns->href;
+     }
+diff --git a/tests/docs/Makefile.am b/tests/docs/Makefile.am
+index 9e2204f..12a97a8 100644
+--- a/tests/docs/Makefile.am
++++ b/tests/docs/Makefile.am
+@@ -168,6 +168,7 @@ EXTRA_DIST =	\
+ 	bug-167.xml \
+ 	bug-168.xml \
+ 	bug-169.xml \
++	bug-179.xml \
+ 	character.xml \
+ 	array.xml \
+ 	items.xml
+diff --git a/tests/docs/bug-179.xml b/tests/docs/bug-179.xml
+new file mode 100644
+index 0000000..69d62f2
+--- /dev/null
++++ b/tests/docs/bug-179.xml
+@@ -0,0 +1 @@
++<doc/>
+diff --git a/tests/general/Makefile.am b/tests/general/Makefile.am
+index 24d0d43..fd1e695 100644
+--- a/tests/general/Makefile.am
++++ b/tests/general/Makefile.am
+@@ -186,6 +186,7 @@ EXTRA_DIST = \
+     bug-176.out bug-176.xsl \
+     bug-177.out bug-177.xsl \
+     bug-178.out bug-178.xsl \
++    bug-179.out bug-179.xsl \
+     character.out character.xsl \
+     character2.out character2.xsl \
+     itemschoose.out itemschoose.xsl \
+diff --git a/tests/general/bug-179.out b/tests/general/bug-179.out
+new file mode 100644
+index 0000000..0a7e67d
+--- /dev/null
++++ b/tests/general/bug-179.out
+@@ -0,0 +1,9 @@
++<?xml version="1.0"?>
++<root xmlns="my::namespace">
++  <foo>...</foo>
++  <bar>...</bar>
++  <foobar>...</foobar>
++  <baz>...</baz>
++  <doc>...</doc>
++  <baz>...</baz>
++</root>
+diff --git a/tests/general/bug-179.xsl b/tests/general/bug-179.xsl
+new file mode 100644
+index 0000000..5847e9a
+--- /dev/null
++++ b/tests/general/bug-179.xsl
+@@ -0,0 +1,24 @@
++<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
++                              xmlns="my::namespace">
++
++<xsl:variable name="var">baz</xsl:variable>
++
++<xsl:output indent="yes"/>
++
++<xsl:template match="/">
++    <root> <!-- This is in the correct namespace "my::namespace" -->
++        <foo>...</foo> <!-- OK. -->
++        <xsl:element name="bar">...</xsl:element> <!-- Still okay. -->
++
++        <!-- Wrong! These are without namespace. -->
++        <xsl:element name="{concat('foo', 'bar')}">...</xsl:element>
++        <xsl:element name="{$var}">...</xsl:element>
++        <xsl:element name="{local-name(*)}">...</xsl:element>
++
++        <!-- Explicitly setting the namespace fixes this. -->
++        <xsl:element name="{$var}" namespace="my::namespace">...</xsl:element>
++    </root>
++</xsl:template>
++
++</xsl:stylesheet>
++
+-- 
+1.7.11.4
+
diff --git a/libxslt.spec b/libxslt.spec
index 1c1550a..25c3d20 100644
--- a/libxslt.spec
+++ b/libxslt.spec
@@ -1,7 +1,7 @@
 Summary: Library providing the Gnome XSLT engine
 Name: libxslt
 Version: 1.1.27
-Release: 1%{?dist}%{?extra_release}
+Release: 2%{?dist}%{?extra_release}
 License: MIT
 Group: Development/Libraries
 Source: ftp://xmlsoft.org/XSLT/libxslt-%{version}.tar.gz
@@ -15,6 +15,7 @@ BuildRequires: automake autoconf
 # Fedora specific patches
 Patch0: multilib.patch
 Patch1: libxslt-1.1.26-utf8-docs.patch
+Patch2: libxslt-Fix-regression-Default-namespace-not-correctly-used.patch
 
 %description
 This C library allows to transform XML files into other XML files
@@ -53,6 +54,7 @@ with XPath functions written in Python.
 %setup -q
 %patch0 -p1
 %patch1 -p1 -b .utf8
+%patch2 -p1
 # Now fix up the timestamps of patched docs files
 # ChangeLog needs to be retouched before gzip as well
 # since timestamp affects output
@@ -120,6 +122,9 @@ make tests
 %doc python/tests/*.xsl
 
 %changelog
+* Tue Oct  9 2012 Daniel Veillard <veillard at redhat.com> - 1.1.27-2
+- fix a regression in default namespace handling
+
 * Wed Sep 12 2012 Daniel Veillard <veillard at redhat.com> - 1.1.27-1
 - upstream release of libxslt-1.1.27
 - a lot of bug fixes and improvements


More information about the scm-commits mailing list