public function addElement(parser\element $element, $iPosition = null) { if (!$element->getNamespace()) { $this->launchException('Element not valid, no namespace defined'); } if (isset($this->aElements[$element->getNamespace()][$element->getName()])) { $this->launchException('Element ever registered', get_defined_vars()); } $element->setPosition($iPosition); $element->setParticle($this); $this->aElements[$element->getNamespace()][$element->getName()] = $element; if (is_null($iPosition)) { $iPosition = count($this->aElementsIndexed); } $this->aElementsIndexed[$iPosition] = $element; }
public function getWeightSchema(schema_ns\parser\element $element, $sMode, $sXMode, $bRoot = false) { $iResult = 0; if ($this->getMatch() || $bRoot) { if (!$this->getMatch()) { if ($bRoot && $sMode === $this->getMode() && $this->checkXMode($sXMode)) { $iResult = self::WEIGHT_ELEMENT_ROOT; if ($this->getXMode() && $this->getXMode() === $sXMode) { $iResult += 1; } } } else { if ($sMode === $this->getMode() && $this->checkXMode($sXMode)) { $iElement = $this->getWeightName($element->getNamespace(), $element->getName()); if ($type = $element->getType()) { $iType = $this->getWeightType($type); $iResult = $iType > $iElement ? $iType : $iElement; if ($this->getXMode() && $this->getXMode() === $sXMode) { $iResult += 1; } } else { $iResult = $iElement; } } } } return $iResult; }
protected function addElement(parser\element $element) { $this->aElements[$element->getNamespace()][$element->getName()] = $element; return $element; }