You are here

public function NodeExtension::translateAttribute in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 vendor/symfony/css-selector/XPath/Extension/NodeExtension.php \Symfony\Component\CssSelector\XPath\Extension\NodeExtension::translateAttribute()

Parameters

Node\AttributeNode $node:

Translator $translator:

Return value

XPathExpr

File

vendor/symfony/css-selector/XPath/Extension/NodeExtension.php, line 167

Class

NodeExtension
XPath expression translator node extension.

Namespace

Symfony\Component\CssSelector\XPath\Extension

Code

public function translateAttribute(Node\AttributeNode $node, Translator $translator) {
  $name = $node
    ->getAttribute();
  $safe = $this
    ->isSafeName($name);
  if ($this
    ->hasFlag(self::ATTRIBUTE_NAME_IN_LOWER_CASE)) {
    $name = strtolower($name);
  }
  if ($node
    ->getNamespace()) {
    $name = sprintf('%s:%s', $node
      ->getNamespace(), $name);
    $safe = $safe && $this
      ->isSafeName($node
      ->getNamespace());
  }
  $attribute = $safe ? '@' . $name : sprintf('attribute::*[name() = %s]', Translator::getXpathLiteral($name));
  $value = $node
    ->getValue();
  $xpath = $translator
    ->nodeToXPath($node
    ->getSelector());
  if ($this
    ->hasFlag(self::ATTRIBUTE_VALUE_IN_LOWER_CASE)) {
    $value = strtolower($value);
  }
  return $translator
    ->addAttributeMatching($xpath, $node
    ->getOperator(), $attribute, $value);
}