Веб-Ссылка BizTalk - генерировала XSD, “потерял” информацию от WSDL

Я использую BizTalk 2006 R2 для генерации веб-ссылки из файла WSDL.

Сравнивая сгенерированный 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>

Эквивалентный XSD, который генерировал BizTalk:

<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 нес потерями?

6
задан skaffman 7 June 2010 в 10:00
поделиться

2 ответа

Если вы не выполняете проверку схемы в конвейере BizTalk, ограничения и maxoccurs> 1 на самом деле ничего не сделают - они не используются BizTalk во время выполнения. Я предполагаю, что это причина того, что веб-ссылка с потерями.

Мне лично никогда не нравилась функция «добавить веб-ссылку» или даже «добавить метаданные адаптера» / WCF. Если ваш wsdl меняется так часто, что ручное копирование определений типов в файл xsd - слишком большая работа:

a) посмотрите на создание простого консольного приложения для получения wsdl, извлеките тип (ы) и обновите файл xsd (начните с меню «Внешние инструменты» в VS) и

б) выясните, что не так с вашим процессом разработки, который требует частого изменения контракта на обслуживание!

1
ответ дан 17 December 2019 в 22:10
поделиться

Пробовали ли вы использовать для этого адаптер WCF вместо «добавления веб-ссылки»?

Вот пример ...

http://blogs.digitaldeposit.net/SARAVANA/post/2007/05/31/BizTalk-2006-R2-consume-an-ASMX-webservice-using-WCF -BasicHttp-adapter.aspx

0
ответ дан 17 December 2019 в 22:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: