diff --git a/ChangeLog b/ChangeLog index b04644916767824f7510fa56ecae123c9d335180_Q2hhbmdlTG9n..8ab8f85070e95f893da813111785a46c3b92ed9b_Q2hhbmdlTG9n 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Thu Dec 5 18:05:44 CET 2002 Daniel Veillard <daniel@veillard.com> + + * libxslt/transform.c: xsl:element generated superfluous xmlns + declarations, closes bug #99905 + * tests/docs/Makefile.am tests/docs/bug-101.xml + tests/general/Makefile.am tests/general/bug-101.*: added the + example in the regression tests for this case + Wed Dec 4 18:12:24 CET 2002 Daniel Veillard <daniel@veillard.com> * libxslt/xslt.c: Matt Sergeant reported a bug when having comments diff --git a/libxslt/transform.c b/libxslt/transform.c index b04644916767824f7510fa56ecae123c9d335180_bGlieHNsdC90cmFuc2Zvcm0uYw==..8ab8f85070e95f893da813111785a46c3b92ed9b_bGlieHNsdC90cmFuc2Zvcm0uYw== 100644 --- a/libxslt/transform.c +++ b/libxslt/transform.c @@ -2242,8 +2242,16 @@ goto error; } if (generateDefault == 1) { - ns = xmlNewNs(copy, comp->ns, NULL); - copy->ns = ns; + xmlNsPtr defaultNs = NULL; + + if ((ctxt->insert != NULL) && (ctxt->insert->type == XML_ELEMENT_NODE)) + defaultNs = xmlSearchNs(ctxt->insert->doc, ctxt->insert, NULL); + if ((defaultNs == NULL) || (!xmlStrEqual(defaultNs->href, comp->ns))) { + ns = xmlNewNs(copy, comp->ns, NULL); + copy->ns = ns; + } else { + copy->ns = defaultNs; + } } else if ((ns == NULL) && (oldns != NULL)) { /* very specific case xsltGetNamespace failed */ ns = xmlNewNs(copy, oldns->href, oldns->prefix); diff --git a/tests/docs/Makefile.am b/tests/docs/Makefile.am index b04644916767824f7510fa56ecae123c9d335180_dGVzdHMvZG9jcy9NYWtlZmlsZS5hbQ==..8ab8f85070e95f893da813111785a46c3b92ed9b_dGVzdHMvZG9jcy9NYWtlZmlsZS5hbQ== 100644 --- a/tests/docs/Makefile.am +++ b/tests/docs/Makefile.am @@ -100,6 +100,7 @@ bug-98.xml \ bug-99.xml \ bug-100.xml \ + bug-101.xml \ character.xml \ array.xml \ items.xml diff --git a/tests/docs/bug-101.xml b/tests/docs/bug-101.xml new file mode 100644 index 0000000000000000000000000000000000000000..8ab8f85070e95f893da813111785a46c3b92ed9b_dGVzdHMvZG9jcy9idWctMTAxLnhtbA== --- /dev/null +++ b/tests/docs/bug-101.xml @@ -0,0 +1,1 @@ +<doc/> diff --git a/tests/general/Makefile.am b/tests/general/Makefile.am index b04644916767824f7510fa56ecae123c9d335180_dGVzdHMvZ2VuZXJhbC9NYWtlZmlsZS5hbQ==..8ab8f85070e95f893da813111785a46c3b92ed9b_dGVzdHMvZ2VuZXJhbC9NYWtlZmlsZS5hbQ== 100644 --- a/tests/general/Makefile.am +++ b/tests/general/Makefile.am @@ -104,6 +104,7 @@ bug-98.out bug-98.xsl \ bug-99.out bug-99.xsl \ bug-100.out bug-100.xsl \ + bug-101.out bug-101.xsl \ character.out character.xsl \ character2.out character2.xsl \ itemschoose.out itemschoose.xsl \ diff --git a/tests/general/bug-101.out b/tests/general/bug-101.out new file mode 100644 index 0000000000000000000000000000000000000000..8ab8f85070e95f893da813111785a46c3b92ed9b_dGVzdHMvZ2VuZXJhbC9idWctMTAxLm91dA== --- /dev/null +++ b/tests/general/bug-101.out @@ -0,0 +1,2 @@ +<?xml version="1.0"?> +<foo xmlns="http://baz.xml"><bar/></foo> diff --git a/tests/general/bug-101.xsl b/tests/general/bug-101.xsl new file mode 100644 index 0000000000000000000000000000000000000000..8ab8f85070e95f893da813111785a46c3b92ed9b_dGVzdHMvZ2VuZXJhbC9idWctMTAxLnhzbA== --- /dev/null +++ b/tests/general/bug-101.xsl @@ -0,0 +1,8 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + <xsl:template match="/"> + <xsl:element xmlns="http://baz.xml" name="foo"> + <xsl:element name="bar"/> + </xsl:element> + </xsl:template> +</xsl:stylesheet>