} else if (xmlStrEqual(prefix, BAD_CAST "xml")) {
prefix = NULL;
}
- } else if (prefix != NULL) {
+ } else {
xmlNsPtr ns;
/*
* SPEC XSLT 1.0:
* 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;
}
bug-167.xml \
bug-168.xml \
bug-169.xml \
+ bug-179.xml \
character.xml \
array.xml \
items.xml
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 \
--- /dev/null
+<?xml version="1.0"?>
+<root xmlns="my::namespace">
+ <foo>...</foo>
+ <bar>...</bar>
+ <foobar>...</foobar>
+ <baz>...</baz>
+ <doc>...</doc>
+ <baz>...</baz>
+</root>
--- /dev/null
+<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>
+