/** * @param \SimpleXMLElement $sxe * @return null|ComplexClassTypesEnum */ public static function getComplexClassType(\SimpleXMLElement $sxe) { $name = XMLUtils::getObjectNameFromElement($sxe); if (false !== strpos($name, '.')) { return new ComplexClassTypesEnum(ComplexClassTypesEnum::COMPONENT); } $baseName = XMLUtils::getBaseFHIRElementNameFromExtension($sxe); if (null === $baseName) { return null; } $baseType = new BaseObjectTypeEnum($baseName); switch ((string) $baseType) { case BaseObjectTypeEnum::BACKBONE_ELEMENT: return new ComplexClassTypesEnum(ComplexClassTypesEnum::RESOURCE); default: return new ComplexClassTypesEnum((string) $baseType); } }
/** * @param XSDMap $XSDMap * @param \SimpleXMLElement $sxe * @param ClassTemplate $classTemplate */ public static function determineParentClass(XSDMap $XSDMap, \SimpleXMLElement $sxe, ClassTemplate $classTemplate) { $fhirElementName = XMLUtils::getBaseFHIRElementNameFromExtension($sxe); if (null === $fhirElementName) { $fhirElementName = XMLUtils::getBaseFHIRElementNameFromRestriction($sxe); } if (null === $fhirElementName) { return; } if (0 === strpos($fhirElementName, 'xs')) { $fhirElementName = substr($fhirElementName, 3); } self::findParentElementXSDMapEntry($fhirElementName, $XSDMap, $classTemplate); }
/** * @param XSDMap $XSDMap * @param ClassTemplate $classTemplate * @param \SimpleXMLElement $choice */ public static function implementChoiceProperty(XSDMap $XSDMap, ClassTemplate $classTemplate, \SimpleXMLElement $choice) { $attributes = $choice->attributes(); // $minOccurs = (int)$attributes['minOccurs']; $maxOccurs = $attributes['maxOccurs']; $documentation = XMLUtils::getDocumentation($choice); foreach ($choice->xpath('xs:element') as $_element) { $propertyTemplate = self::buildProperty($XSDMap, $classTemplate, $_element, $documentation, $maxOccurs); if ($propertyTemplate) { $classTemplate->addProperty($propertyTemplate); } } }