function &generateType() { $vars = array(); $e = $this->getElements(); $generator = new TypeMeta(); $generator->setType($this->getAttribute('name')); $generator->setIsComplex(true); $meta =& $generator->getMeta(); return $meta; }
function &generate() { $vars = array(); $e = $this->getElements(); $generator = new TypeMeta(); $generator->setType($this->getAttribute('name')); $a = $this->getElementsByType('xsAnnotation'); if (count($a) > 0) { //print "found annotation for ". $this->getAttribute( 'name' ) ."!\n"; $d = $a[0]->getElementsByType('xsDocumentation'); if (count($d) > 0) { //print "found documentation for ". $this->getAttribute( 'name' ) ."!\n"; $generator->setDocumentation($d[0]->get()); } $ap = $a[0]->getElementsByType('xsAppinfo'); if (count($ap) > 0) { $generator->setAppInfo($ap[0]->get()); } } $idx = 0; if ($e[$idx]->getType() == 'xsAnnotation') { $idx = 1; } if ($e[$idx]->getType() == 'xsRestriction' || $e[$idx]->getType() == 'xsExtension') { $generator->setIsExtension($e[$idx]->getType() == 'xsExtension'); // Set base class $generator->setBase($e[$idx]->getAttribute('base')); // Look for enums $enums = $e[$idx]->getElementsByType('xsEnumeration'); for ($i = 0; $i < count($enums); $i++) { $generator->addEnum($enums[$i]->getAttribute('value')); $an = $enums[$i]->getElementsByType('xsAnnotation'); if (count($an) > 0) { $doc = $an[0]->getElementsByType('xsDocumentation'); if (count($doc) > 0) { $generator->addEnumDoc($i, $doc[0]->get()); } $ap = $an[0]->getElementsByType('xsAppinfo'); if (count($ap) > 0) { $generator->addEnumAppInfo($i, $ap[0]->get()); } } } // Look for max/mins $array_limits = array(); $min = $e[$idx]->getElementsByType('xsMinLength'); $max = $e[$idx]->getElementsByType('xsMaxLength'); $minIn = $e[$idx]->getElementsByType('xsMinInclusive'); $maxIn = $e[$idx]->getElementsByType('xsMaxInclusive'); $minEx = $e[$idx]->getElementsByType('xsMinExclusive'); $maxEx = $e[$idx]->getElementsByType('xsMaxExclusive'); if (count($min) > 0) { $generator->setRestriction('minLength', $min[0]->getAttribute('value')); } if (count($max) > 0) { $generator->setRestriction('maxLength', $max[0]->getAttribute('value')); } if (count($minIn) > 0) { $generator->setRestriction('minInclusive', $minIn[0]->getAttribute('value')); } if (count($maxIn) > 0) { $generator->setRestriction('maxInclusive', $maxIn[0]->getAttribute('value')); } if (count($minEx) > 0) { $generator->setRestriction('minExclusive', $minEx[0]->getAttribute('value')); } if (count($maxEx) > 0) { $generator->setRestriction('maxExclusive', $maxEx[0]->getAttribute('value')); } } else { if ($e[$idx]->getType() == 'xsList') { //$extends = "xsList"; $itemType = $e[$idx]->getAttribute('itemType'); $generator->setListType($itemType); $generator->bag['isArray'] = true; } else { if ($e[$idx]->getType() == 'xsUnion') { $generator->setUnionMembers($e[$idx]->getAttribute('memberTypes')); } else { $this->log("WARN: unexpected element in xsSimpleType code generation"); } } } $meta =& $generator->getMeta(); return $meta; }