fix a regression in default namespace handling
This commit is contained in:
parent
484b1e0749
commit
9e033dd900
@ -0,0 +1,132 @@
|
|||||||
|
From 70213d9c9a86adac841247b249dc188ba2aab3db Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nick Wellnhofer <wellnhofer@aevum.de>
|
||||||
|
Date: Fri, 28 Sep 2012 21:04:39 +0200
|
||||||
|
Subject: [PATCH] Fix regression: Default namespace not correctly used
|
||||||
|
To: libvir-list@redhat.com
|
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=684564
|
||||||
|
|
||||||
|
Signed-off-by: Daniel Veillard <veillard@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
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
Summary: Library providing the Gnome XSLT engine
|
Summary: Library providing the Gnome XSLT engine
|
||||||
Name: libxslt
|
Name: libxslt
|
||||||
Version: 1.1.27
|
Version: 1.1.27
|
||||||
Release: 1%{?dist}%{?extra_release}
|
Release: 2%{?dist}%{?extra_release}
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
Source: ftp://xmlsoft.org/XSLT/libxslt-%{version}.tar.gz
|
Source: ftp://xmlsoft.org/XSLT/libxslt-%{version}.tar.gz
|
||||||
@ -15,6 +15,7 @@ BuildRequires: automake autoconf
|
|||||||
# Fedora specific patches
|
# Fedora specific patches
|
||||||
Patch0: multilib.patch
|
Patch0: multilib.patch
|
||||||
Patch1: libxslt-1.1.26-utf8-docs.patch
|
Patch1: libxslt-1.1.26-utf8-docs.patch
|
||||||
|
Patch2: libxslt-Fix-regression-Default-namespace-not-correctly-used.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
This C library allows to transform XML files into other XML files
|
This C library allows to transform XML files into other XML files
|
||||||
@ -53,6 +54,7 @@ with XPath functions written in Python.
|
|||||||
%setup -q
|
%setup -q
|
||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
%patch1 -p1 -b .utf8
|
%patch1 -p1 -b .utf8
|
||||||
|
%patch2 -p1
|
||||||
# Now fix up the timestamps of patched docs files
|
# Now fix up the timestamps of patched docs files
|
||||||
# ChangeLog needs to be retouched before gzip as well
|
# ChangeLog needs to be retouched before gzip as well
|
||||||
# since timestamp affects output
|
# since timestamp affects output
|
||||||
@ -120,6 +122,9 @@ make tests
|
|||||||
%doc python/tests/*.xsl
|
%doc python/tests/*.xsl
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Oct 9 2012 Daniel Veillard <veillard@redhat.com> - 1.1.27-2
|
||||||
|
- fix a regression in default namespace handling
|
||||||
|
|
||||||
* Wed Sep 12 2012 Daniel Veillard <veillard@redhat.com> - 1.1.27-1
|
* Wed Sep 12 2012 Daniel Veillard <veillard@redhat.com> - 1.1.27-1
|
||||||
- upstream release of libxslt-1.1.27
|
- upstream release of libxslt-1.1.27
|
||||||
- a lot of bug fixes and improvements
|
- a lot of bug fixes and improvements
|
||||||
|
Loading…
Reference in New Issue
Block a user