summaryrefslogtreecommitdiff
path: root/ext/soap/php_encoding.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2004-02-25 14:34:50 +0000
committerDmitry Stogov <dmitry@php.net>2004-02-25 14:34:50 +0000
commitb1fa3214f06dc16bdc2aeac8d942708cbfbd9661 (patch)
treeca84f3482d6e97e00c24fe4d959545972ba42a98 /ext/soap/php_encoding.c
parent9be67e5a42e12a79595f03c227e445e91930f674 (diff)
downloadphp-git-b1fa3214f06dc16bdc2aeac8d942708cbfbd9661.tar.gz
fix: XMLSchema <choice> support was improved to support elements with minOccurs=0
Diffstat (limited to 'ext/soap/php_encoding.c')
-rw-r--r--ext/soap/php_encoding.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
index 88a447a712..9487336a56 100644
--- a/ext/soap/php_encoding.c
+++ b/ext/soap/php_encoding.c
@@ -1056,7 +1056,7 @@ static int model_to_xml_object(xmlNodePtr node, sdlContentModelPtr model, HashTa
}
return 1;
} else if (model->min_occurs == 0) {
- return 1;
+ return 2;
} else {
if (strict) {
php_error(E_ERROR, "SOAP-ERROR: Encoding: object hasn't '%s' property",model->u.element->name);
@@ -1080,15 +1080,19 @@ static int model_to_xml_object(xmlNodePtr node, sdlContentModelPtr model, HashTa
}
case XSD_CONTENT_CHOICE: {
sdlContentModelPtr *tmp;
+ int ret = 0;
zend_hash_internal_pointer_reset(model->u.content);
while (zend_hash_get_current_data(model->u.content, (void**)&tmp) == SUCCESS) {
- if (model_to_xml_object(node, *tmp, prop, style, 0)) {
+ int tmp_ret = model_to_xml_object(node, *tmp, prop, style, 0);
+ if (tmp_ret == 1) {
return 1;
+ } else if (tmp_ret != 0) {
+ ret = 1;
}
zend_hash_move_forward(model->u.content);
}
- return 0;
+ return ret;
}
case XSD_CONTENT_GROUP: {
return model_to_xml_object(node, model->u.group->model, prop, style, model->min_occurs > 0);