[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