summaryrefslogtreecommitdiff
path: root/ext/soap/php_encoding.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/soap/php_encoding.c')
-rw-r--r--ext/soap/php_encoding.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
index 05e2d5143c..9978612868 100644
--- a/ext/soap/php_encoding.c
+++ b/ext/soap/php_encoding.c
@@ -1357,7 +1357,14 @@ static xmlNodePtr to_xml_object(encodeTypePtr type, zval *data, int style, xmlNo
if ((*attr)->fixed && strcmp((*attr)->fixed,dummy->children->content) != 0) {
soap_error3(E_ERROR, "Encoding: Attribute '%s' has fixed value '%s' (value '%s' is not allowed)", (*attr)->name, (*attr)->fixed, dummy->children->content);
}
- xmlSetProp(xmlParam, (*attr)->name, dummy->children->content);
+ if ((*attr)->namens &&
+ (type->ns == NULL || strcmp((*attr)->namens, type->ns))) {
+ xmlNsPtr nsp = encode_add_ns(xmlParam, (*attr)->namens);
+
+ xmlSetNsProp(xmlParam, nsp, (*attr)->name, dummy->children->content);
+ } else {
+ xmlSetProp(xmlParam, (*attr)->name, dummy->children->content);
+ }
}
xmlUnlinkNode(dummy);
xmlFreeNode(dummy);