Web services Delphi WSDL导入不解析由扩展派生的类型

Web services Delphi WSDL导入不解析由扩展派生的类型,web-services,delphi,soap,xsd,wsdl,Web Services,Delphi,Soap,Xsd,Wsdl,使用Delphi2007,我试图导入一个wsdl供客户端使用 我已在导入WSDLhttps://services.rdc.nl/voertuigscan/2.0/wsdl,它导入xsd以定义其类型。在导入的xsd中,有几个额外的导入和包含的xsd,其中定义了以下类型: <xs:complexType name="BedragExtended"> <xs:simpleContent> <xs:extension base="ct:Bedrag">

使用Delphi2007,我试图导入一个wsdl供客户端使用

我已在导入WSDLhttps://services.rdc.nl/voertuigscan/2.0/wsdl,它导入xsd以定义其类型。在导入的xsd中,有几个额外的导入和包含的xsd,其中定义了以下类型:

<xs:complexType name="BedragExtended">
  <xs:simpleContent>
    <xs:extension base="ct:Bedrag">
      <xs:attribute name="Bron" type="Bron"/>
    </xs:extension>
  </xs:simpleContent>
</xs:complexType>
ct:Bedrag类型在附带的XSD中定义为:

<xs:simpleType name="Bedrag">
  <xs:restriction base="xs:decimal">
    <xs:totalDigits value="9"/>
    <xs:fractionDigits value="2"/>
  </xs:restriction>
</xs:simpleType>
但是,BedragExtended类型导入为:

// ************************************************************************ //
// XML       : BedragExtended, global, <complexType>
// Namespace : http://nsp.rdc.nl/RDC/voertuigscan
// ************************************************************************ //
BedragExtended = class(TRemotable)
private
  FBron: Bron;
  FBron_Specified: boolean;
  procedure SetBron(Index: Integer; const ABron: Bron);
  function  Bron_Specified(Index: Integer): boolean;
published
  property Bron: Bron  Index (IS_ATTR or IS_OPTN) read FBron write SetBron stored Bron_Specified;
end;

如您所见,这里没有提到Bedrag类型的底层值,但是wsdl导入生成的.pas文件顶部的头显示正确的xsd已被解析。如何让Delphi正确生成BedragExtended类型?

至少在我所知道的所有语言中都可以看到这种行为。简单类型通常不映射到类。唯一值得注意的例外是使用枚举方面的简单类型,在这种情况下,您可能会得到一个类型安全的Java和.NET枚举


这在某种程度上是意料之中的,因为BedragExtended是一个带有属性的字符串。不幸的是,在XSD 1.0中,不能同时扩展以设置属性和限制以约束词法空间,因此这种实现非常常见,这是一种复杂的类型,用于获取属性,但内容简单,基本上是某种文本。

至少在我所知道的所有语言中都可以看到这种行为。简单类型通常不映射到类。唯一值得注意的例外是使用枚举方面的简单类型,在这种情况下,您可能会得到一个类型安全的Java和.NET枚举


这在某种程度上是意料之中的,因为BedragExtended是一个带有属性的字符串。不幸的是,在XSD 1.0中,不能同时扩展以设置属性和限制以约束词法空间,因此这种实现非常常见,它是一种获取属性的复杂类型,但具有简单的内容(基本上是某种文本)。

可能不相关,但是我在导入WSDL和文件而不是包含时出错。可能不相关,但在导入WSDL和文件而不是包含时出错。你是说这是不可能的吗?BedragExtended是一个带有附加属性的十进制数。Bedrag在导入的WSDL中确实是一个整数,但是Bedrag和BedragExtended之间的整个关系已经消失了,我还没有看到它。正如我所说的,简单类型(带有枚举方面的类型除外)没有映射到类;它们是根据原语映射的。你是说这是不可能的吗?BedragExtended是一个带有附加属性的十进制数。Bedrag在导入的WSDL中确实是一个整数,但是Bedrag和BedragExtended之间的整个关系已经消失了,我还没有看到它。正如我所说的,简单类型(带有枚举方面的类型除外)没有映射到类;它们被映射到基本体。