]> granicus.if.org Git - php/commitdiff
added new method SimpleXMLElement->registerNamespace(string prefix, string uri)
authorChristian Stocker <chregu@php.net>
Sun, 25 Jul 2004 11:02:43 +0000 (11:02 +0000)
committerChristian Stocker <chregu@php.net>
Sun, 25 Jul 2004 11:02:43 +0000 (11:02 +0000)
"registers a prefix <-> namespaceURI combination for use in a later xpath query. "

NEWS
ext/simplexml/simplexml.c

diff --git a/NEWS b/NEWS
index 6da907236c36353906d264bda1f6dc6ae712ac30..7a48461c75d1a2d49e51d7c3a522f30b88839892 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,7 @@ PHP                                                                        NEWS
   . array_intersect_ukey() (Christiano Duarte)
   . stream_context_get_default()  (Wez)
   . stream_socket_enable_crypto()  (Wez)
+  . SimpleXMLElement->registerNamespace() (Christian)
 - PHP will now respect extension dependencies when initializing.  (Wez)
 - Added Cursor support for MySQL 5.0.x in mysqli (Georg)
 - Added proxy support to ftp wrapper via http. (Sara)
index b2af53d210183ec680c8855c9a2d7f1453985103..c5ec233a234e58b09fc67e3fc72813f4faaca518 100644 (file)
@@ -843,6 +843,29 @@ SXE_METHOD(xpath)
 
        xmlXPathFreeObject(retval);
 }
+
+SXE_METHOD(registerNamespace)
+{
+       php_sxe_object    *sxe;
+       zval *id;
+       int prefix_len, ns_uri_len;
+       char *prefix, *ns_uri;
+
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &prefix, &prefix_len, &ns_uri, &ns_uri_len) == FAILURE) {
+               return;
+       }
+
+       sxe = php_sxe_fetch_object(getThis() TSRMLS_CC);
+       if (!sxe->xpath) {
+               sxe->xpath = xmlXPathNewContext((xmlDocPtr) sxe->document->ptr);
+       }
+
+       if (xmlXPathRegisterNs(sxe->xpath, prefix, ns_uri) != 0) {
+               RETURN_FALSE
+       }
+       RETURN_TRUE;
+}
+
 /* }}} */
 
 /* {{{ proto asXML([string filename])
@@ -1604,6 +1627,7 @@ static zend_function_entry sxe_functions[] = {
        SXE_ME(__construct,            NULL, ZEND_ACC_PUBLIC|ZEND_ACC_FINAL) /* must be called */
        SXE_ME(asXML,                  NULL, ZEND_ACC_PUBLIC)
        SXE_ME(xpath,                  NULL, ZEND_ACC_PUBLIC)
+       SXE_ME(registerNamespace,      NULL, ZEND_ACC_PUBLIC)
        SXE_ME(attributes,             NULL, ZEND_ACC_PUBLIC)
        SXE_ME(children,                           NULL, ZEND_ACC_PUBLIC)
        {NULL, NULL, NULL}