if (node) {
zval *val;
- val = master_to_zval(model->u.element->encode, node);
+ if (node && node->children && node->children->content) {
+ if (model->u.element->fixed && strcmp(model->u.element->fixed,node->children->content) != 0) {
+ php_error(E_ERROR,"SOAP-ERROR: Encoding: Element '%s' has fixed value '%s' (value '%s' is not allowed)",model->u.element->name,model->u.element->fixed,node->children->content);
+ }
+ val = master_to_zval(model->u.element->encode, node);
+ } else if (model->u.element->fixed) {
+ xmlNodePtr dummy = xmlNewNode(NULL, "BOGUS");
+ xmlNodeSetContent(dummy, model->u.element->fixed);
+ val = master_to_zval(model->u.element->encode, dummy);
+ xmlFreeNode(dummy);
+ } else if (model->u.element->def && !model->u.element->nillable) {
+ xmlNodePtr dummy = xmlNewNode(NULL, "BOGUS");
+ xmlNodeSetContent(dummy, model->u.element->def);
+ val = master_to_zval(model->u.element->encode, dummy);
+ xmlFreeNode(dummy);
+ } else {
+ val = master_to_zval(model->u.element->encode, node);
+ }
if ((node = get_node(node->next, model->u.element->name)) != NULL) {
zval *array;
array_init(array);
add_next_index_zval(array, val);
do {
- val = master_to_zval(model->u.element->encode, node);
+ if (node && node->children && node->children->content) {
+ if (model->u.element->fixed && strcmp(model->u.element->fixed,node->children->content) != 0) {
+ php_error(E_ERROR,"SOAP-ERROR: Encoding: Element '%s' has fixed value '%s' (value '%s' is not allowed)",model->u.element->name,model->u.element->fixed,node->children->content);
+ }
+ val = master_to_zval(model->u.element->encode, node);
+ } else if (model->u.element->fixed) {
+ xmlNodePtr dummy = xmlNewNode(NULL, "BOGUS");
+ xmlNodeSetContent(dummy, model->u.element->fixed);
+ val = master_to_zval(model->u.element->encode, dummy);
+ xmlFreeNode(dummy);
+ } else if (model->u.element->def && !model->u.element->nillable) {
+ xmlNodePtr dummy = xmlNewNode(NULL, "BOGUS");
+ xmlNodeSetContent(dummy, model->u.element->def);
+ val = master_to_zval(model->u.element->encode, dummy);
+ xmlFreeNode(dummy);
+ } else {
+ val = master_to_zval(model->u.element->encode, node);
+ }
add_next_index_zval(array, val);
} while ((node = get_node(node->next, model->u.element->name)) != NULL);
val = array;
if ((*attr)->fixed && strcmp((*attr)->fixed,str_val) != 0) {
php_error(E_ERROR,"SOAP-ERROR: Encoding: Attribute '%s' has fixed value '%s' (value '%s' is not allowed)",(*attr)->name,(*attr)->fixed,str_val);
}
+ } else if ((*attr)->fixed) {
+ str_val = (*attr)->fixed;
} else if ((*attr)->def) {
str_val = (*attr)->def;
}
}
} else {
property = master_to_xml(enc, *val, style, node);
+ if (property->children && property->children->content &&
+ model->u.element->fixed && strcmp(model->u.element->fixed,property->children->content) != 0) {
+ php_error(E_ERROR,"SOAP-ERROR: Encoding: Element '%s' has fixed value '%s' (value '%s' is not allowed)",model->u.element->name,model->u.element->fixed,property->children->content);
+ }
}
xmlNodeSetName(property, model->u.element->name);
if (style == SOAP_LITERAL && model->u.element->namens) {
}
} else {
property = master_to_xml(enc, *data, style, node);
+ if (property->children && property->children->content &&
+ model->u.element->fixed && strcmp(model->u.element->fixed,property->children->content) != 0) {
+ php_error(E_ERROR,"SOAP-ERROR: Encoding: Element '%s' has fixed value '%s' (value '%s' is not allowed)",model->u.element->name,model->u.element->fixed,property->children->content);
+ }
}
xmlNodeSetName(property, model->u.element->name);
if (style == SOAP_LITERAL && model->u.element->namens) {