gpt4 book ai didi

xsd - BizTalk Web 引用 - 生成的 XSD 具有来自 WSDL 的 "lost"信息

转载 作者:行者123 更新时间:2023-12-02 12:37:02 25 4
gpt4 key购买 nike

我正在使用 BizTalk 2006 R2 从 WSDL 文件生成 Web 引用。

将生成的 XSD 与 WSDL 进行比较,很明显丢失了很多信息。

考虑以下 WSDL 摘录:

<s:element form="unqualified" minOccurs="0" maxOccurs="4" name="Applicant">
<s:complexType>
<s:sequence>
<s:element form="unqualified" minOccurs="1" maxOccurs="1" name="ApplicantIdentifier">
<s:simpleType>
<s:restriction base="s:string" />
</s:simpleType>
</s:element>
<s:element form="unqualified" minOccurs="0" maxOccurs="1" name="Name">
<s:complexType>
<s:sequence>
<s:element form="unqualified" minOccurs="0" maxOccurs="1" name="Title">
<s:simpleType>
<s:restriction base="s:string">
<s:maxLength value="10" />
</s:restriction>
</s:simpleType>
</s:element>
<s:element form="unqualified" minOccurs="0" maxOccurs="1" name="Forename">
<s:simpleType>
<s:restriction base="s:string">
<s:pattern value="[0-9A-Za-z \-]*" />
<s:maxLength value="15" />
<s:minLength value="1" />
</s:restriction>
</s:simpleType>
</s:element>
<!-- more -->
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>

BizTalk 生成的等效 XSD 是:

<xs:element minOccurs="0" maxOccurs="unbounded" form="unqualified" name="Applicant">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="ApplicantIdentifier" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="Name">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="Title" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="Forename" type="xs:string" />
<!-- more -->
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>

因此,XSD 已丢失限制模式并为 minOccurs 和 maxOccurs 设置了自己的值。

我需要从另一个源映射到 XSD,并且希望捕获该阶段不符合 WSDL 的数据。

有谁知道为什么 BizTalk 没有在 XSD 中保留这些限制;或者如何生成无损 XSD?

最佳答案

除非您在 BizTalk 管道中进行架构验证,否则限制和 maxoccurrs > 1 实际上不会执行任何操作 - BizTalk 在运行时不会使用它们。我猜这就是网络引用有损的原因。

我个人从来不喜欢“添加 Web 引用”功能,甚至不喜欢“添加适配器元数据”/WCF。如果您的 wsdl 更改得如此频繁,那么手动将类型定义复制到 xsd 文件中的工作量就太大了:

a) 构建一个简单的控制台应用程序来检索 wsdl、提取类型并更新 xsd 文件(从 VS 中的外部工具菜单启动它),以及

b) 找出需要经常更改服务契约(Contract)的开发流程出了什么问题!

关于xsd - BizTalk Web 引用 - 生成的 XSD 具有来自 WSDL 的 "lost"信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2988510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com