Просмотр исходного кода

Merge branch 'master' of ssh://biuro.biall-net.pl:2222/plabudda/se

* 'master' of ssh://biuro.biall-net.pl:2222/plabudda/se:
  fixed Resintall schema for benefit_info - todo bug - local type with restriction
a.binder 8 лет назад
Родитель
Сommit
630a587626
1 измененных файлов с 17 добавлено и 3 удалено
  1. 17 3
      SE/se-lib/XML.php

+ 17 - 3
SE/se-lib/XML.php

@@ -135,8 +135,9 @@ class XML {
 					if ($isEnum) return 'p5:enum';
 
 					// 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);
 					$simpleTypeNode = self::findSimpleTypeNode($docArray, $name);
 					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][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}'");
-		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) {