[PHP-CVS] cvs: php-src /ext/dom dom_fe.h node.c
rrichards Tue Jan 13 18:05:41 2009 UTC Modified files: /php-src/ext/domdom_fe.h node.c Log: Add method DomNode::getLineNo to return line number for a parsed node http://cvs.php.net/viewvc.cgi/php-src/ext/dom/dom_fe.h?r1=1.24r2=1.25diff_format=u Index: php-src/ext/dom/dom_fe.h diff -u php-src/ext/dom/dom_fe.h:1.24 php-src/ext/dom/dom_fe.h:1.25 --- php-src/ext/dom/dom_fe.h:1.24 Wed Dec 31 11:12:30 2008 +++ php-src/ext/dom/dom_fe.hTue Jan 13 18:05:41 2009 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: dom_fe.h,v 1.24 2008/12/31 11:12:30 sebastian Exp $ */ +/* $Id: dom_fe.h,v 1.25 2009/01/13 18:05:41 rrichards Exp $ */ #ifndef DOM_FE_H #define DOM_FE_H @@ -168,6 +168,7 @@ PHP_METHOD(domnode, C14N); PHP_METHOD(domnode, C14NFile); PHP_METHOD(domnode, getNodePath); +PHP_METHOD(domnode, getLineNo); /* domnodelist methods */ PHP_FUNCTION(dom_nodelist_item); http://cvs.php.net/viewvc.cgi/php-src/ext/dom/node.c?r1=1.68r2=1.69diff_format=u Index: php-src/ext/dom/node.c diff -u php-src/ext/dom/node.c:1.68 php-src/ext/dom/node.c:1.69 --- php-src/ext/dom/node.c:1.68 Wed Dec 31 11:12:30 2008 +++ php-src/ext/dom/node.c Tue Jan 13 18:05:41 2009 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: node.c,v 1.68 2008/12/31 11:12:30 sebastian Exp $ */ +/* $Id: node.c,v 1.69 2009/01/13 18:05:41 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include config.h @@ -106,6 +106,9 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_getNodePath, 0, 0, 0) ZEND_END_ARG_INFO(); +ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_getLineNo, 0, 0, 0) +ZEND_END_ARG_INFO(); + ZEND_BEGIN_ARG_INFO_EX(arginfo_dom_node_C14N, 0, 0, 0) ZEND_ARG_INFO(0, exclusive) ZEND_ARG_INFO(0, with_comments) @@ -149,6 +152,7 @@ PHP_FALIAS(setUserData, dom_node_set_user_data, arginfo_dom_node_set_user_data) PHP_FALIAS(getUserData, dom_node_get_user_data, arginfo_dom_node_get_user_data) PHP_ME(domnode, getNodePath, arginfo_dom_node_getNodePath, ZEND_ACC_PUBLIC) + PHP_ME(domnode, getLineNo, arginfo_dom_node_getLineNo, ZEND_ACC_PUBLIC) PHP_ME(domnode, C14N, arginfo_dom_node_C14N, ZEND_ACC_PUBLIC) PHP_ME(domnode, C14NFile, arginfo_dom_node_C14NFile, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} @@ -2029,6 +2033,24 @@ } /* }}} */ +/* {{{ proto int DOMNode::getLineNo() + Gets line number for a node */ +PHP_METHOD(domnode, getLineNo) +{ + zval *id; + xmlNode *nodep; + dom_object *intern; + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + + DOM_GET_THIS_OBJ(nodep, id, xmlNodePtr, intern); + + RETURN_LONG(xmlGetLineNo(nodep)); +} +/* }}} */ + #endif /* -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/dom dom_fe.h node.c
chregu Sun Jul 16 15:05:32 2006 UTC Modified files: /php-src/ext/domdom_fe.h node.c Log: Added DOMNode::getNodePath() for getting an XPath for a node. (MFB) http://cvs.php.net/viewvc.cgi/php-src/ext/dom/dom_fe.h?r1=1.17r2=1.18diff_format=u Index: php-src/ext/dom/dom_fe.h diff -u php-src/ext/dom/dom_fe.h:1.17 php-src/ext/dom/dom_fe.h:1.18 --- php-src/ext/dom/dom_fe.h:1.17 Fri May 26 18:22:06 2006 +++ php-src/ext/dom/dom_fe.hSun Jul 16 15:05:32 2006 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: dom_fe.h,v 1.17 2006/05/26 18:22:06 rrichards Exp $ */ +/* $Id: dom_fe.h,v 1.18 2006/07/16 15:05:32 chregu Exp $ */ #ifndef DOM_FE_H #define DOM_FE_H @@ -167,6 +167,7 @@ PHP_FUNCTION(dom_node_get_user_data); PHP_METHOD(domnode, C14N); PHP_METHOD(domnode, C14NFile); +PHP_METHOD(domnode, getNodePath); /* domnodelist methods */ PHP_FUNCTION(dom_nodelist_item); http://cvs.php.net/viewvc.cgi/php-src/ext/dom/node.c?r1=1.44r2=1.45diff_format=u Index: php-src/ext/dom/node.c diff -u php-src/ext/dom/node.c:1.44 php-src/ext/dom/node.c:1.45 --- php-src/ext/dom/node.c:1.44 Fri May 26 18:22:06 2006 +++ php-src/ext/dom/node.c Sun Jul 16 15:05:32 2006 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: node.c,v 1.44 2006/05/26 18:22:06 rrichards Exp $ */ +/* $Id: node.c,v 1.45 2006/07/16 15:05:32 chregu Exp $ */ #ifdef HAVE_CONFIG_H #include config.h @@ -53,6 +53,7 @@ PHP_FALIAS(getFeature, dom_node_get_feature, NULL) PHP_FALIAS(setUserData, dom_node_set_user_data, NULL) PHP_FALIAS(getUserData, dom_node_get_user_data, NULL) + PHP_ME(domnode, getNodePath, NULL, ZEND_ACC_PUBLIC) PHP_ME(domnode, C14N, NULL, ZEND_ACC_PUBLIC) PHP_ME(domnode, C14NFile, NULL, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} @@ -1857,3 +1858,32 @@ } #endif + +/* {{{ proto int DOMNode::getNodePath() + Gets an xpath for a node */ + +PHP_METHOD(domnode, getNodePath) +{ + zval *id; + xmlNode *nodep; + dom_object *intern; + char *value; + + + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), O, id, dom_node_class_entry) == FAILURE) { + return; + } + + DOM_GET_OBJ(nodep, id, xmlNodePtr, intern); + + value = xmlGetNodePath(nodep); + if (value == NULL) { + RETURN_EMPTY_STRING(); + } else { + RETVAL_STRING(value, 1); + xmlFree(value); + } + + +} + -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/dom dom_fe.h node.c /ext/dom/tests canonicalization.phpt
rrichards Fri May 26 18:22:06 2006 UTC Added files: /php-src/ext/dom/tests canonicalization.phpt Modified files: /php-src/ext/domdom_fe.h node.c Log: add C14N() and C14NFile() methods to perform XML canonicalization add test http://cvs.php.net/viewcvs.cgi/php-src/ext/dom/dom_fe.h?r1=1.16r2=1.17diff_format=u Index: php-src/ext/dom/dom_fe.h diff -u php-src/ext/dom/dom_fe.h:1.16 php-src/ext/dom/dom_fe.h:1.17 --- php-src/ext/dom/dom_fe.h:1.16 Sun Jan 1 13:09:49 2006 +++ php-src/ext/dom/dom_fe.hFri May 26 18:22:06 2006 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: dom_fe.h,v 1.16 2006/01/01 13:09:49 sniper Exp $ */ +/* $Id: dom_fe.h,v 1.17 2006/05/26 18:22:06 rrichards Exp $ */ #ifndef DOM_FE_H #define DOM_FE_H @@ -165,6 +165,8 @@ PHP_FUNCTION(dom_node_get_feature); PHP_FUNCTION(dom_node_set_user_data); PHP_FUNCTION(dom_node_get_user_data); +PHP_METHOD(domnode, C14N); +PHP_METHOD(domnode, C14NFile); /* domnodelist methods */ PHP_FUNCTION(dom_nodelist_item); http://cvs.php.net/viewcvs.cgi/php-src/ext/dom/node.c?r1=1.43r2=1.44diff_format=u Index: php-src/ext/dom/node.c diff -u php-src/ext/dom/node.c:1.43 php-src/ext/dom/node.c:1.44 --- php-src/ext/dom/node.c:1.43 Mon Feb 13 10:23:57 2006 +++ php-src/ext/dom/node.c Fri May 26 18:22:06 2006 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: node.c,v 1.43 2006/02/13 10:23:57 dmitry Exp $ */ +/* $Id: node.c,v 1.44 2006/05/26 18:22:06 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include config.h @@ -53,6 +53,8 @@ PHP_FALIAS(getFeature, dom_node_get_feature, NULL) PHP_FALIAS(setUserData, dom_node_set_user_data, NULL) PHP_FALIAS(getUserData, dom_node_get_user_data, NULL) + PHP_ME(domnode, C14N, NULL, ZEND_ACC_PUBLIC) + PHP_ME(domnode, C14NFile, NULL, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} }; @@ -1669,4 +1671,189 @@ DOM_NOT_IMPLEMENTED(); } /* }}} end dom_node_get_user_data */ + + +static void dom_canonicalization(INTERNAL_FUNCTION_PARAMETERS, int mode) +{ + zval *id; + zval *xpath_array=NULL, *ns_prefixes=NULL; + xmlNodePtr nodep; + xmlDocPtr docp; + xmlNodeSetPtr nodeset = NULL; + dom_object *intern; + long exclusive=0, with_comments=0, file_len=0; + xmlChar **inclusive_ns_prefixes = NULL; + char *file = NULL; +int ret = -1; +xmlOutputBufferPtr buf; + xmlXPathContextPtr ctxp=NULL; + xmlXPathObjectPtr xpathobjp=NULL; + + if (mode == 0) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), + O|bba!a!, id, dom_node_class_entry, exclusive, with_comments, + xpath_array, ns_prefixes) == FAILURE) { + return; + } + } else { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), + Os|bba!a!, id, dom_node_class_entry, file, file_len, exclusive, + with_comments, xpath_array, ns_prefixes) == FAILURE) { + return; + } + } + + DOM_GET_OBJ(nodep, id, xmlNodePtr, intern); + + docp = nodep-doc; + + if (! docp) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, Node must be associated with a document); + RETURN_FALSE; + } + + if (xpath_array == NULL) { + if (nodep-type != XML_DOCUMENT_NODE) { + ctxp = xmlXPathNewContext(docp); + ctxp-node = nodep; + xpathobjp = xmlXPathEvalExpression((.//. | .//@* | .//namespace::*), ctxp); + ctxp-node = NULL; + if (xpathobjp xpathobjp-type == XPATH_NODESET) { + nodeset = xpathobjp-nodesetval; + } else { + if (xpathobjp) { + xmlXPathFreeObject(xpathobjp); + } + xmlXPathFreeContext(ctxp); + php_error_docref(NULL TSRMLS_CC, E_WARNING, XPath query did not return a nodeset.); + RETURN_FALSE; + } + } + } else { + /*xpath query from xpath_array */ + HashTable *ht = Z_ARRVAL_P(xpath_array); + zval **tmp; + char *xquery; + + if (zend_hash_find(ht, query, sizeof(query), (void**)tmp) == SUCCESS + Z_TYPE_PP(tmp) == IS_STRING) { + xquery = Z_STRVAL_PP(tmp); + } else { + php_error_docref(NULL TSRMLS_CC, E_WARNING, 'query' missing from xpath array or is not a string); +