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