sterling Sat Jan 17 16:22:27 2004 EDT Modified files: /php-src/ext/simplexml php_simplexml.h simplexml.c /php-src/ext/simplexml/tests profile04.phpt profile05.phpt profile06.phpt profile07.phpt profile10.phpt Log: namespace accesses are now soley URI based as opposed to prefix based.
Index: php-src/ext/simplexml/php_simplexml.h diff -u php-src/ext/simplexml/php_simplexml.h:1.13 php-src/ext/simplexml/php_simplexml.h:1.14 --- php-src/ext/simplexml/php_simplexml.h:1.13 Sat Jan 17 14:41:31 2004 +++ php-src/ext/simplexml/php_simplexml.h Sat Jan 17 16:22:26 2004 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_simplexml.h,v 1.13 2004/01/17 19:41:31 helly Exp $ */ +/* $Id: php_simplexml.h,v 1.14 2004/01/17 21:22:26 sterling Exp $ */ #ifndef PHP_SIMPLEXML_H #define PHP_SIMPLEXML_H @@ -53,16 +53,10 @@ PHP_MINFO_FUNCTION(simplexml); typedef struct { - xmlHashTablePtr nsmap; - int refcount; -} simplexml_nsmap; - -typedef struct { zend_object zo; php_libxml_node_ptr *node; php_libxml_ref_obj *document; HashTable *properties; - simplexml_nsmap *nsmapptr; xmlXPathContextPtr xpath; struct { php_libxml_node_ptr *node; Index: php-src/ext/simplexml/simplexml.c diff -u php-src/ext/simplexml/simplexml.c:1.110 php-src/ext/simplexml/simplexml.c:1.111 --- php-src/ext/simplexml/simplexml.c:1.110 Sat Jan 17 14:41:31 2004 +++ php-src/ext/simplexml/simplexml.c Sat Jan 17 16:22:26 2004 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: simplexml.c,v 1.110 2004/01/17 19:41:31 helly Exp $ */ +/* $Id: simplexml.c,v 1.111 2004/01/17 21:22:26 sterling Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -66,8 +66,6 @@ subnode = php_sxe_object_new(sxe->zo.ce TSRMLS_CC); subnode->document = sxe->document; subnode->document->refcount++; - subnode->nsmapptr = sxe->nsmapptr; - subnode->nsmapptr->refcount++; subnode->iter.type = itertype; if (name) { subnode->iter.name = xmlStrdup(name); @@ -126,28 +124,12 @@ static inline int match_ns(php_sxe_object *sxe, xmlNodePtr node, xmlChar *name) { - xmlChar *prefix = NULL; - - if (name == NULL && (node->ns == NULL || node->ns->prefix == NULL)) { + if (name == NULL && (node->ns == NULL || node->ns->href == NULL)) { return 1; } - - if (node->ns) { - if (sxe->nsmapptr) { - prefix = xmlHashLookup(sxe->nsmapptr->nsmap, node->ns->href); - } - - if (prefix == NULL) { - prefix = (xmlChar*)node->ns->prefix; - } - - if (prefix == NULL) { - return 0; - } - - if (!xmlStrcmp(prefix, name)) { - return 1; - } + + if (!xmlStrcmp(node->ns->href, name)) { + return 1; } return 0; @@ -597,8 +579,6 @@ subnode = php_sxe_object_new(sxe_ref->zo.ce TSRMLS_CC); subnode->document = sxe_ref->document; subnode->document->refcount++; - subnode->nsmapptr = sxe_ref->nsmapptr; - subnode->nsmapptr->refcount++; php_libxml_increment_node_ptr((php_libxml_node_object *)subnode, node, NULL TSRMLS_CC); (*value)->type = IS_OBJECT; @@ -712,16 +692,6 @@ } /* }}} */ -/* {{{ simplexml_ce_xpath_register_ns() - */ -static void -simplexml_ce_xpath_register_ns(char *prefix, xmlXPathContext *xpath, char *href) -{ - xmlXPathRegisterNs(xpath, prefix, href); -} -/* }}} */ - - /* {{{ xpath() */ SXE_METHOD(xpath) @@ -752,7 +722,6 @@ sxe->xpath->node = sxe->node->node; ns = xmlGetNsList((xmlDocPtr) sxe->document->ptr, (xmlNodePtr) sxe->node->node); - if (ns != NULL) { while (ns[nsnbr] != NULL) { nsnbr++; @@ -762,14 +731,7 @@ sxe->xpath->namespaces = ns; sxe->xpath->nsNr = nsnbr; - /* Register namespaces added in simplexml_cs_register_ns() */ - xmlHashScan((xmlHashTablePtr) sxe->nsmapptr->nsmap, (xmlHashScanner) simplexml_ce_xpath_register_ns, sxe->xpath); - retval = xmlXPathEval(query, sxe->xpath); - - /* Cleanup registered namespaces added in simplexml_cs_register_ns() */ - xmlXPathRegisteredNsCleanup(sxe->xpath); - if (ns != NULL) { xmlFree(ns); sxe->xpath->namespaces = NULL; @@ -811,26 +773,6 @@ } /* }}} */ -/* {{{ simplexml_ce_register_ns() - */ -SXE_METHOD(register_ns) -{ - php_sxe_object *sxe; - char *nsname; - char *nsvalue; - int nsname_len; - int nsvalue_len; - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &nsname, &nsname_len, &nsvalue, &nsvalue_len) == FAILURE) { - return; - } - - sxe = php_sxe_fetch_object(getThis() TSRMLS_CC); - - xmlHashAddEntry(sxe->nsmapptr->nsmap, nsvalue, xmlStrdup(nsname)); -} -/* }}} */ - /* {{{ proto asXML([string filename]) */ SXE_METHOD(asXML) @@ -1030,9 +972,6 @@ if (sxe->node) { nodep = xmlDocCopyNode(sxe->node->node, docp, 1); } - clone->nsmapptr = emalloc(sizeof(simplexml_nsmap)); - clone->nsmapptr->nsmap = xmlHashCreate(10); - clone->nsmapptr->refcount = 1; php_libxml_increment_node_ptr((php_libxml_node_object *)clone, nodep, NULL TSRMLS_CC); @@ -1040,15 +979,6 @@ } /* }}} */ -/* {{{ _free_ns_entry() - */ -static void -_free_ns_entry(void *p, xmlChar *data) -{ - xmlFree(p); -} -/* }}} */ - /* {{{ sxe_object_dtor() */ static void sxe_object_dtor(void *object, zend_object_handle handle TSRMLS_DC) @@ -1073,11 +1003,6 @@ php_libxml_node_decrement_resource((php_libxml_node_object *)sxe TSRMLS_CC); - if (sxe->nsmapptr && --sxe->nsmapptr->refcount == 0) { - xmlHashFree(sxe->nsmapptr->nsmap, _free_ns_entry); - efree(sxe->nsmapptr); - } - if (sxe->xpath) { xmlXPathFreeContext(sxe->xpath); } @@ -1164,9 +1089,6 @@ sxe = php_sxe_object_new(ce TSRMLS_CC); php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp TSRMLS_CC); - sxe->nsmapptr = emalloc(sizeof(simplexml_nsmap)); - sxe->nsmapptr->nsmap = xmlHashCreate(10); - sxe->nsmapptr->refcount = 1; php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL TSRMLS_CC); return_value->type = IS_OBJECT; @@ -1205,9 +1127,6 @@ sxe = php_sxe_object_new(ce TSRMLS_CC); php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp TSRMLS_CC); - sxe->nsmapptr = emalloc(sizeof(simplexml_nsmap)); - sxe->nsmapptr->nsmap = xmlHashCreate(10); - sxe->nsmapptr->refcount = 1; sxe->iter.type = SXE_ITER_NONE; php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL TSRMLS_CC); @@ -1238,9 +1157,6 @@ } php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, docp TSRMLS_CC); - sxe->nsmapptr = emalloc(sizeof(simplexml_nsmap)); - sxe->nsmapptr->nsmap = xmlHashCreate(10); - sxe->nsmapptr->refcount = 1; php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, xmlDocGetRootElement(docp), NULL TSRMLS_CC); } @@ -1498,9 +1414,6 @@ sxe = php_sxe_object_new(ce TSRMLS_CC); sxe->document = object->document; php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, nodep->doc TSRMLS_CC); - sxe->nsmapptr = emalloc(sizeof(simplexml_nsmap)); - sxe->nsmapptr->nsmap = xmlHashCreate(10); - sxe->nsmapptr->refcount = 1; php_libxml_increment_node_ptr((php_libxml_node_object *)sxe, nodep, NULL TSRMLS_CC); return_value->type = IS_OBJECT; @@ -1544,7 +1457,6 @@ /* each method can have its own parameters and visibility */ static zend_function_entry sxe_functions[] = { SXE_ME(__construct, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) /* must be called */ - SXE_ME(register_ns, NULL, ZEND_ACC_PUBLIC) SXE_ME(asXML, NULL, ZEND_ACC_PUBLIC) SXE_ME(xpath, NULL, ZEND_ACC_PUBLIC) SXE_ME(attributes, NULL, ZEND_ACC_PUBLIC) @@ -1578,7 +1490,7 @@ { php_info_print_table_start(); php_info_print_table_header(2, "Simplexml support", "enabled"); - php_info_print_table_row(2, "Revision", "$Revision: 1.110 $"); + php_info_print_table_row(2, "Revision", "$Revision: 1.111 $"); php_info_print_table_row(2, "Schema support", #ifdef LIBXML_SCHEMAS_ENABLED "enabled"); Index: php-src/ext/simplexml/tests/profile04.phpt diff -u php-src/ext/simplexml/tests/profile04.phpt:1.2 php-src/ext/simplexml/tests/profile04.phpt:1.3 --- php-src/ext/simplexml/tests/profile04.phpt:1.2 Fri Jan 16 17:26:09 2004 +++ php-src/ext/simplexml/tests/profile04.phpt Sat Jan 17 16:22:26 2004 @@ -10,7 +10,7 @@ </root> '); -echo $root->children('reserved')->child; +echo $root->children('reserved-ns')->child; echo "\n---Done---\n"; ?> --EXPECT-- Index: php-src/ext/simplexml/tests/profile05.phpt diff -u php-src/ext/simplexml/tests/profile05.phpt:1.2 php-src/ext/simplexml/tests/profile05.phpt:1.3 --- php-src/ext/simplexml/tests/profile05.phpt:1.2 Fri Jan 16 17:26:09 2004 +++ php-src/ext/simplexml/tests/profile05.phpt Sat Jan 17 16:22:26 2004 @@ -11,12 +11,8 @@ </root> '); -$root->register_ns('myns', 'reserved-ns'); - -echo $root->children('myns')->child; echo $root->children('reserved')->child; echo "\n---Done---\n"; ?> --EXPECT-- -Hello ---Done--- Index: php-src/ext/simplexml/tests/profile06.phpt diff -u php-src/ext/simplexml/tests/profile06.phpt:1.3 php-src/ext/simplexml/tests/profile06.phpt:1.4 --- php-src/ext/simplexml/tests/profile06.phpt:1.3 Sat Jan 17 11:39:52 2004 +++ php-src/ext/simplexml/tests/profile06.phpt Sat Jan 17 16:22:26 2004 @@ -11,7 +11,7 @@ </root> '); -$attr = $root->child->attributes('reserved'); +$attr = $root->child->attributes('reserved-ns'); echo $attr['attribute']; echo "\n---Done---\n"; ?> Index: php-src/ext/simplexml/tests/profile07.phpt diff -u php-src/ext/simplexml/tests/profile07.phpt:1.3 php-src/ext/simplexml/tests/profile07.phpt:1.4 --- php-src/ext/simplexml/tests/profile07.phpt:1.3 Sat Jan 17 11:39:52 2004 +++ php-src/ext/simplexml/tests/profile07.phpt Sat Jan 17 16:22:26 2004 @@ -11,10 +11,8 @@ </root> '); -$root->register_ns('myns', 'reserved-ns'); - $rsattr = $root->child->attributes('reserved'); -$myattr = $root->child->attributes('myns'); +$myattr = $root->child->attributes('reserved-ns'); echo $rsattr['attribute']; echo $myattr['attribute']; Index: php-src/ext/simplexml/tests/profile10.phpt diff -u php-src/ext/simplexml/tests/profile10.phpt:1.3 php-src/ext/simplexml/tests/profile10.phpt:1.4 --- php-src/ext/simplexml/tests/profile10.phpt:1.3 Sat Jan 17 11:39:52 2004 +++ php-src/ext/simplexml/tests/profile10.phpt Sat Jan 17 16:22:26 2004 @@ -11,8 +11,8 @@ </root> '); -$rsattr = $root->child->attributes('reserved'); -$spattr = $root->child->attributes('special'); +$rsattr = $root->child->attributes('reserved-ns'); +$spattr = $root->child->attributes('special-ns'); echo $rsattr['attribute']; echo "\n";
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php