/** * @param QOM\SelectorInterface|QOM\JoinInterface $left * @param QOM\SelectorInterface $right * @param QOM\JoinConditionInterface $condition * * @return string * * @throws NotImplementedException if a SameNodeJoinCondtion is used. */ public function walkJoinCondition($left, QOM\SelectorInterface $right, QOM\JoinConditionInterface $condition) { if ($condition instanceof QOM\ChildNodeJoinConditionInterface) { return $this->walkChildNodeJoinCondition($condition); } if ($condition instanceof QOM\DescendantNodeJoinConditionInterface) { return $this->walkDescendantNodeJoinCondition($condition); } if ($condition instanceof QOM\EquiJoinConditionInterface) { if ($left instanceof QOM\SelectorInterface) { $selectorName = $left->getSelectorName(); } else { $selectorName = $this->getRightJoinSelector($left->getJoinCondition()); } return $this->walkEquiJoinCondition($selectorName, $right->getSelectorName(), $condition); } if ($condition instanceof QOM\SameNodeJoinConditionInterface) { throw new NotImplementedException("SameNodeJoinCondtion"); } }
/** * Selector ::= nodeTypeName ['AS' selectorName] * nodeTypeName ::= Name * * @param QOM\SelectorInterface $selector * @return string */ protected function convertSelector(QOM\SelectorInterface $selector) { return $this->generator->evalSelector($selector->getNodeTypeName(), $selector->getSelectorName()); }