fixing bug #115913 for xsl:copy with namespace nodes. added the test to
authorDaniel Veillard <veillard@src.gnome.org>
Sun, 6 Jul 2003 16:33:43 +0000 (16:33 +0000)
committerDaniel Veillard <veillard@src.gnome.org>
Sun, 6 Jul 2003 16:33:43 +0000 (16:33 +0000)
* libxslt/transform.c: fixing bug #115913 for xsl:copy with namespace
  nodes.
* tests/docs/Makefile.am tests/docs/bug-122.*
  tests/general/Makefile.am tests/general/bug-122*: added the
  test to the regression suite.
Daniel

ChangeLog
libxslt/transform.c
tests/docs/Makefile.am
tests/docs/bug-122.xml [new file with mode: 0644]
tests/general/Makefile.am
tests/general/bug-122.out [new file with mode: 0644]
tests/general/bug-122.xsl [new file with mode: 0644]

index d93d9e7..8a79e62 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Sun Jul  6 18:31:56 CEST 2003 Daniel Veillard <daniel@veillard.com>
+
+       * libxslt/transform.c: fixing bug #115913 for xsl:copy with namespace
+         nodes.
+       * tests/docs/Makefile.am tests/docs/bug-122.*
+         tests/general/Makefile.am tests/general/bug-122*: added the
+         test to the regression suite.
+       
 Sun Jul  6 18:09:13 CEST 2003 Daniel Veillard <daniel@veillard.com>
 
        * libxslt/preproc.c: fix bug #115778 for attribute value template
index a2634b6..b5a2043 100644 (file)
@@ -2323,6 +2323,13 @@ xsltCopy(xsltTransformContextPtr ctxt, xmlNodePtr node,
                copy = xmlNewComment(node->content);
                xmlAddChild(ctxt->insert, copy);
                break;
+           case XML_NAMESPACE_DECL:
+#ifdef WITH_XSLT_DEBUG_PROCESS
+               xsltGenericDebug(xsltGenericDebugContext,
+                                "xsltCopy: namespace declaration\n");
+#endif
+                xsltCopyNamespace(ctxt, ctxt->insert, node);
+               break;
            default:
                break;
 
index 7ff5c8a..1141b09 100644 (file)
@@ -121,6 +121,7 @@ EXTRA_DIST =        \
        bug-119.xml \
        bug-120.xml \
        bug-121.xml \
+       bug-122.xml \
        character.xml \
        array.xml \
        items.xml
diff --git a/tests/docs/bug-122.xml b/tests/docs/bug-122.xml
new file mode 100644 (file)
index 0000000..b2c1b4e
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0"?> 
+<!DOCTYPE doc > 
+<doc 
+        version="1.0" 
+        xmlns:a="urn:a" 
+        xmlns:b="urn:b" 
+        xmlns:c="urn:c" 
+> 
+ <empty/> 
+</doc> 
index 191495a..dd1dac8 100644 (file)
@@ -126,6 +126,7 @@ EXTRA_DIST = \
     bug-119.out bug-119.xsl \
     bug-120.out bug-120.xsl \
     bug-121.out bug-121.xsl \
+    bug-122.out bug-122.xsl \
     character.out character.xsl \
     character2.out character2.xsl \
     itemschoose.out itemschoose.xsl \
diff --git a/tests/general/bug-122.out b/tests/general/bug-122.out
new file mode 100644 (file)
index 0000000..87ca7ca
--- /dev/null
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<Document xmlns:c="urn:c" xmlns:b="urn:b" xmlns:a="urn:a"/>
diff --git a/tests/general/bug-122.xsl b/tests/general/bug-122.xsl
new file mode 100644 (file)
index 0000000..919fa5a
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?> 
+<xsl:stylesheet version="1.0" 
+        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 
+<xsl:template match="doc"> 
+        <xsl:variable name="node" select="."/> 
+        <xsl:element name="Document" namespace="{namespace-uri(.)}"> 
+                <xsl:for-each select="namespace::*"> 
+                        <xsl:if test="string(.) != namespace-uri($node)"> 
+                                <xsl:copy/> 
+                        </xsl:if> 
+                </xsl:for-each> 
+        </xsl:element> 
+</xsl:template> 
+</xsl:stylesheet>