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

Reply via email to