diff options
author | Dmitry Stogov <dmitry@php.net> | 2004-01-09 16:36:13 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2004-01-09 16:36:13 +0000 |
commit | 9f8d30f2153db31f63ea22a541999af8a77948e0 (patch) | |
tree | a9cce99953fcc942dc3a9747ab86f9782a17369d /ext/soap/php_schema.c | |
parent | d9328fb38eaf47b8308197bd9bb5f39091daf569 (diff) | |
download | php-git-9f8d30f2153db31f63ea22a541999af8a77948e0.tar.gz |
BUGFIX: WSDL support (complexType/complexContent/restiction/atttibute)
Diffstat (limited to 'ext/soap/php_schema.c')
-rw-r--r-- | ext/soap/php_schema.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/ext/soap/php_schema.c b/ext/soap/php_schema.c index 5fa5a5ee91..e0921e3d03 100644 --- a/ext/soap/php_schema.c +++ b/ext/soap/php_schema.c @@ -121,6 +121,7 @@ static int schema_simpleType(sdlPtr *sdl, xmlAttrPtr tsn, xmlNodePtr simpleType, } ht = cur_type->elements; smart_str_appends(&key, cur_type->name); + smart_str_0(&key); } zend_hash_add(ht, key.c, key.len + 1, &newType, sizeof(sdlTypePtr), (void **)&ptr); @@ -316,22 +317,30 @@ static int schema_restriction_complexContent(sdlPtr *sdl, xmlAttrPtr tsn, xmlNod if(trav->type == XML_ELEMENT_NODE) { if(!strcmp(trav->name, "group")) { schema_group(sdl, tsn, trav, cur_type); - return TRUE; + break; } else if(!strcmp(trav->name, "all")) { schema_all(sdl, tsn, trav, cur_type); - return TRUE; + break; } else if(!strcmp(trav->name, "choice")) { schema_choice(sdl, tsn, trav, cur_type); - return TRUE; + break; } else if(!strcmp(trav->name, "sequence")) { schema_sequence(sdl, tsn, trav, cur_type); - return TRUE; + break; } else if(!strcmp(trav->name, "attribute")) { schema_attribute(sdl, tsn, trav, cur_type); } } trav = trav->next; } + while (trav != NULL) { + if(trav->type == XML_ELEMENT_NODE) { + if(!strcmp(trav->name, "attribute")) { + schema_attribute(sdl, tsn, trav, cur_type); + } + } + trav = trav->next; + } return TRUE; } @@ -773,6 +782,7 @@ static int schema_complexType(sdlPtr *sdl, xmlAttrPtr tsn, xmlNodePtr compType, } ht = cur_type->elements; smart_str_appends(&key, newType->name); + smart_str_0(&key); } zend_hash_add(ht, key.c, key.len + 1, &newType, sizeof(sdlTypePtr), (void **)&ptr); @@ -1055,6 +1065,7 @@ static int schema_attribute(sdlPtr *sdl, xmlAttrPtr tsn, xmlNodePtr attrType, sd smart_str_free(&key); return TRUE; } + smart_str_free(&key); } zend_hash_next_index_insert(cur_type->attributes, &newAttr, sizeof(sdlAttributePtr), NULL); |