|
@@ -135,8 +135,9 @@ class XML {
|
|
|
if ($isEnum) return 'p5:enum';
|
|
if ($isEnum) return 'p5:enum';
|
|
|
|
|
|
|
|
// TODO: recurse with limit
|
|
// TODO: recurse with limit
|
|
|
- if ('xs:' === substr($type, 0, 3)) return "xsd:" . substr($type, 3);
|
|
|
|
|
- if ('xsd:' === substr($type, 0, 4)) return $type;
|
|
|
|
|
|
|
+ if ($fixedType = self::tryConvertXsdTypeToXsdPrefix($type)) {
|
|
|
|
|
+ return $fixedType;
|
|
|
|
|
+ }
|
|
|
list($prefix, $name) = explode(':', $type);
|
|
list($prefix, $name) = explode(':', $type);
|
|
|
$simpleTypeNode = self::findSimpleTypeNode($docArray, $name);
|
|
$simpleTypeNode = self::findSimpleTypeNode($docArray, $name);
|
|
|
DBG::log($simpleTypeNode, 'array', "\$simpleTypeNode \$fieldName='{$fieldName}' ... type='{$type}'");
|
|
DBG::log($simpleTypeNode, 'array', "\$simpleTypeNode \$fieldName='{$fieldName}' ... type='{$type}'");
|
|
@@ -180,7 +181,20 @@ class XML {
|
|
|
if (empty($nodeArray[2][0][0]) || !self::isXsdTag($nodeArray[2][0][0], 'simpleType')) throw new Exception("Missing 'xsd:simpleType' for field '{$fieldName}'");
|
|
if (empty($nodeArray[2][0][0]) || !self::isXsdTag($nodeArray[2][0][0], 'simpleType')) throw new Exception("Missing 'xsd:simpleType' for field '{$fieldName}'");
|
|
|
if (empty($nodeArray[2][0][2][0]) || !self::isXsdTag($nodeArray[2][0][2][0][0], 'restriction')) throw new Exception("Missing 'xsd:restriction' for field '{$fieldName}'");
|
|
if (empty($nodeArray[2][0][2][0]) || !self::isXsdTag($nodeArray[2][0][2][0][0], 'restriction')) throw new Exception("Missing 'xsd:restriction' for field '{$fieldName}'");
|
|
|
if (empty($nodeArray[2][0][2][0][1]['base'])) throw new Exception("Missing 'xsd:restriction/@base' for field '{$fieldName}'");
|
|
if (empty($nodeArray[2][0][2][0][1]['base'])) throw new Exception("Missing 'xsd:restriction/@base' for field '{$fieldName}'");
|
|
|
- return self::convertXsdTypeToXsdPrefix($nodeArray[2][0][2][0][1]['base']);
|
|
|
|
|
|
|
+ $type = $nodeArray[2][0][2][0][1]['base'];
|
|
|
|
|
+ if ($fixedType = self::tryConvertXsdTypeToXsdPrefix($type)) {
|
|
|
|
|
+ return $fixedType;
|
|
|
|
|
+ }
|
|
|
|
|
+ DBG::log($nodeArray[2][0], 'array', "TODO:findElementType: local type with restriction field({$fieldName}) type({$type})");
|
|
|
|
|
+ // TODO: element local type with restriction
|
|
|
|
|
+ // <xsd:element name="TYPE">
|
|
|
|
|
+ // <xsd:simpleType>
|
|
|
|
|
+ // <xsd:restriction base="default_db__x3A__CRM_PROCES:TYPE_Simple">
|
|
|
|
|
+ // <xsd:enumeration value="PROCES_BENEFIT_INFO"/>
|
|
|
|
|
+ // </xsd:restriction>
|
|
|
|
|
+ // </xsd:simpleType>
|
|
|
|
|
+ // </xsd:element>
|
|
|
|
|
+ return $type;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public static function tryConvertXsdTypeToXsdPrefix($type) {
|
|
public static function tryConvertXsdTypeToXsdPrefix($type) {
|