[PHP-CVS] cvs: php-src /ext/dom dom_fe.h node.c

2009-01-13 Thread Rob Richards
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

2006-07-16 Thread Christian Stocker
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

2006-05-26 Thread Rob Richards
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);
+