]> granicus.if.org Git - php/commitdiff
namespace accesses are now soley URI based as opposed to prefix based.
authorSterling Hughes <sterling@php.net>
Sat, 17 Jan 2004 21:22:26 +0000 (21:22 +0000)
committerSterling Hughes <sterling@php.net>
Sat, 17 Jan 2004 21:22:26 +0000 (21:22 +0000)
ext/simplexml/php_simplexml.h
ext/simplexml/simplexml.c
ext/simplexml/tests/profile04.phpt
ext/simplexml/tests/profile05.phpt
ext/simplexml/tests/profile06.phpt
ext/simplexml/tests/profile07.phpt
ext/simplexml/tests/profile10.phpt

index 4b05cfa06ecc22c5a53fc0312da59a444de88133..52615052a0a91ef3251e0503e5e37742b124728b 100644 (file)
@@ -52,17 +52,11 @@ PHP_RINIT_FUNCTION(simplexml);
 #endif
 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 a2513bcf9c0bc0ede1decb6e5bef0fef9ae46a77..6a2c0777206283b9008b493cf372f5730000b68d 100644 (file)
@@ -66,8 +66,6 @@ static void _node_as_zval(php_sxe_object *sxe, xmlNodePtr node, zval *value, int
        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 xmlNodePtr php_sxe_get_first_node(php_sxe_object *sxe, xmlNodePtr node TS
 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 @@ _get_base_node_value(php_sxe_object *sxe_ref, xmlNodePtr node, zval **value TSRM
                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 @@ sxe_objects_compare(zval *object1, zval *object2 TSRMLS_DC)
 }
 /* }}} */
 
-/* {{{ 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_METHOD(xpath)
        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_METHOD(xpath)
        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 @@ SXE_METHOD(xpath)
 }
 /* }}} */
 
-/* {{{ 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 @@ sxe_object_clone(void *object, void **clone_ptr TSRMLS_DC)
        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 @@ sxe_object_clone(void *object, void **clone_ptr TSRMLS_DC)
 }
 /* }}} */
 
-/* {{{ _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 @@ static void sxe_object_dtor(void *object, zend_object_handle handle TSRMLS_DC)
 
        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 @@ PHP_FUNCTION(simplexml_load_file)
 
        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 @@ PHP_FUNCTION(simplexml_load_string)
 
        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 @@ SXE_METHOD(__construct)
        }
 
        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 @@ PHP_FUNCTION(simplexml_import_dom)
                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 @@ ZEND_GET_MODULE(simplexml)
 /* 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)
index 7b7245de4f0a0c538f612bd5e34ca09a858cbf24..27714e992710b7ac9f42412da7a5d9791e4e9ff3 100644 (file)
@@ -10,7 +10,7 @@ $root = simplexml_load_string('<?xml version="1.0"?>
 </root>
 ');
 
-echo $root->children('reserved')->child;
+echo $root->children('reserved-ns')->child;
 echo "\n---Done---\n";
 ?>
 --EXPECT--
index 217ac670529b43e977e9c1b09400b94538c5f1c3..f69622118a1ae9ed8b0448a29f311cdfa75907ab 100644 (file)
@@ -11,12 +11,8 @@ $root = simplexml_load_string('<?xml version="1.0"?>
 </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 16d52200c44ab13c8a38d45c7d452d0fe72f7ecc..e519fa9d642c9f733fb8ab47bcb7bb87d8707145 100644 (file)
@@ -11,7 +11,7 @@ $root = simplexml_load_string('<?xml version="1.0"?>
 </root>
 ');
 
-$attr = $root->child->attributes('reserved');
+$attr = $root->child->attributes('reserved-ns');
 echo $attr['attribute'];
 echo "\n---Done---\n";
 ?>
index 9972f79973d73f9fcb1f5f754bcdb1ff21d6fb89..c8a426927439a62c672e8fa15d984e697d601b12 100644 (file)
@@ -11,10 +11,8 @@ $root = simplexml_load_string('<?xml version="1.0"?>
 </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 4c62aef43ee7f7835ba4b5344beaff4500439fab..c2652c62fdc8c89350fba3b4c8907a0d43f40fc9 100644 (file)
@@ -11,8 +11,8 @@ $root = simplexml_load_string('<?xml version="1.0"?>
 </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";