/** * Joins an XPath expression as an adjacent of another. * * @param XPathExpr $xpath The parent XPath expression * @param NodeInterface $sub The adjacent XPath expression * * @return XPathExpr An XPath instance */ protected function _xpath_direct_adjacent($xpath, $sub) { // when sub immediately follows xpath $xpath->join('/following-sibling::', $sub->toXpath()); $xpath->addNameTest(); $xpath->addCondition('position() = 1'); return $xpath; }
/** * undocumented function * * @param XPathExpr $xpath The XPath expression * * @return XPathExpr The modified expression */ protected function xpath_empty($xpath) { $xpath->addCondition('not(*) and not(normalize-space())'); return $xpath; }
/** * undocumented function * * @param XPathExpr $xpath * @param XPathExpr $expr * * @return XPathExpr */ protected function _xpath_not($xpath, $expr) { // everything for which not expr applies $expr = $expr->toXpath(); $cond = $expr->getCondition(); // FIXME: should I do something about element_path? $xpath->addCondition(sprintf('not(%s)', $cond)); return $xpath; }