note 50674 added to function.dom-domxpath-evaluate

From: Date: Sun, 06 Mar 2005 20:55:21 +0000
Subject: note 50674 added to function.dom-domxpath-evaluate
Groups: php.notes 
Request: Send a blank email to php-notes+get-86017@lists.php.net to get a copy of this message
this class can substitute the method evaluate while it is not validated. Made for Yuri Bastos and João Gilberto Magalhães. <?php class XPtahQuery { // function returns a DOMNodeList from a relative xPath public static function selectNodes($pNode, $xPath) { $pos = strpos(self::getFullXpath($pNode),"/",1); $xPathQuery = substr(self::getFullXpath($pNode),$pos);//to paste /#document[1]/ $xPathQueryFull = $xPathQuery. $xPath; $domXPath = new DOMXPath($pNode->ownerDocument); $rNodeList = $domXPath->query($xPathQueryFull); return $rNodeList; } // function returns a DOMNode from a xPath from other DOMNode public static function selectSingleNode($pNode, $xPath) { $pos = strpos(self::getFullXpath($pNode),"/",1); $xPathQuery = substr(self::getFullXpath($pNode),$pos);//to paste /#document[1]/ $xPathQueryFull = $xPathQuery. $xPath; $domXPath = new DOMXPath($pNode->ownerDocument); $rNode = $domXPath->query($xPathQueryFull)->item(0); return $rNode; } //utilitaries functions off selectSingleNode private function getNodePos($pNode, $nodeName) { if($pNode == null) { return 0; } else { $var = 0; if ($pNode->previousSibling != null) { if ($pNode->previousSibling->nodeName == $nodeName) { $var = 1; } } return self::getNodePos($pNode->previousSibling, $nodeName) + $var; } } //utilitaries functions off selectSingleNode private function getFullXpath($pNode) { if($pNode == null) { return ""; } else { return self::getFullXpath($pNode->parentNode) . "/" . $pNode->nodeName . "[" .strval(self::getNodePos($pNode, $pNode->nodeName)+1) . "]";//+1 to get the real xPath index } } } ?> ---- Manual Page -- http://www.php.net/manual/en/function.dom-domxpath-evaluate.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+50674 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+50674&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+50674&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+50674&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+50674&report=yes&reason=useless Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+50674&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+50674&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#86017) next »