Ejemplo n.º 1
0
 /**
  * @param XPathExpr $xpath
  *
  * @return XPathExpr
  */
 public function translateVisited(XPathExpr $xpath)
 {
     return $xpath->addCondition('0');
 }
 /**
  *
  * @param XPathExpr $xpath        	
  *
  * @return XPathExpr
  */
 public function translateEmpty(XPathExpr $xpath)
 {
     return $xpath->addCondition('not(*) and not(string-length())');
 }
Ejemplo n.º 3
0
 /**
  * @param Node\ElementNode $node
  *
  * @return XPathExpr
  */
 public function translateElement(Node\ElementNode $node)
 {
     $element = $node->getElement();
     if ($this->hasFlag(self::ELEMENT_NAME_IN_LOWER_CASE)) {
         $element = strtolower($element);
     }
     if ($element) {
         $safe = $this->isSafeName($element);
     } else {
         $element = '*';
         $safe = true;
     }
     if ($node->getNamespace()) {
         $element = sprintf('%s:%s', $node->getNamespace(), $element);
         $safe = $safe && $this->isSafeName($node->getNamespace());
     }
     $xpath = new XPathExpr('', $element);
     if (!$safe) {
         $xpath->addNameTest();
     }
     return $xpath;
 }
Ejemplo n.º 4
0
 /**
  * @param XPathExpr    $xpath
  * @param FunctionNode $function
  *
  * @return XPathExpr
  *
  * @throws ExpressionErrorException
  */
 public function translateLang(XPathExpr $xpath, FunctionNode $function)
 {
     $arguments = $function->getArguments();
     foreach ($arguments as $token) {
         if (!($token->isString() || $token->isIdentifier())) {
             throw new ExpressionErrorException('Expected a single string or identifier for :lang(), got ' . implode(', ', $arguments));
         }
     }
     return $xpath->addCondition(sprintf('lang(%s)', Translator::getXpathLiteral($arguments[0]->getValue())));
 }
 /**
  *
  * @param XPathExpr $xpath        	
  * @param XPathExpr $combinedXpath        	
  *
  * @return XPathExpr
  */
 public function translateIndirectAdjacent(XPathExpr $xpath, XPathExpr $combinedXpath)
 {
     return $xpath->join('/following-sibling::', $combinedXpath);
 }
 /**
  * @param XPathExpr $xpath
  * @param string    $attribute
  * @param string    $value
  *
  * @return XPathExpr
  */
 public function translateDifferent(XPathExpr $xpath, $attribute, $value)
 {
     return $xpath->addCondition(sprintf($value ? 'not(%1$s) or %1$s != %2$s' : '%s != %s', $attribute, Translator::getXpathLiteral($value)));
 }