Есть ли способ обработать / игнорировать встроенный xsd в полученном XML-файле в biztalk? - PullRequest
0 голосов
/ 31 мая 2019

Клиент отправляет файл, содержащий данные клиента в формате XML. Проблема в том, что он также содержит xsd, который они используют. Есть ли способ при настройке исходной схемы в biztalk проверить ее, игнорируя xsd?

Я попытался включить узлы для него, но он не проверяется из-за некоторой ошибки в пространстве имен и продолжает искать первый элементный элемент, содержащий данные клиента

<Root>
  <xsd:schema id="Root" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="Root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="Data" minOccurs="0" maxOccurs="unbounded">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="number" type="xsd:int"/>
                <xsd:element name="name">
                    <xsd:simpleType>
                      <xsd:restriction base="xsd:string">
                        <xsd:maxLength value="60"/>
                      </xsd:restriction>
                    </xsd:simpleType>
                </xsd:element>
                <xsd:element name="address">
                  <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                      <xsd:maxLength value="30"/>
                    </xsd:restriction>
                  </xsd:simpleType>
                </xsd:element>
                <xsd:element name="Zip">
                  <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                      <xsd:maxLength value="5"/>
                    </xsd:restriction>
                  </xsd:simpleType>
                </xsd:element>
                <xsd:element name="telephone">
                  <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                      <xsd:maxLength value="60"/>
                    </xsd:restriction>
                  </xsd:simpleType>
                </xsd:element>
                <xsd:element name="custNumber">
                  <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                      <xsd:maxLength value="11"/>
                    </xsd:restriction>
                  </xsd:simpleType>
                </xsd:element>
                <xsd:element name="branchnumber" type="xsd:int"/>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
        <xsd:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="lax"/>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>

    <Data>
        <number>12345</number>
        <name>Scrooge McDuck</name>
        <address>Address 1</adresse>
        <Zip>0000</Zip>
        <telephone>1234563290</telephone>
        <custNumber>123324</custNumber>
        <branchnumber>0</branchnumber>
    </Data>
    <Data>
        <number>23456</number>
        <name>Donald Duck</name>
        <address>Address 4</adresse>
        <Zip>4625</Zip>
        <telephone>1234567890</telephone>
        <custNumber>123321</custNumber>
        <branchnumber>0</branchnumber>
    </Data>
</Root>

1 Ответ

0 голосов
/ 31 мая 2019

Я не думаю, что это на самом деле вызовет проблему.

Во-первых, не беспокойтесь о проверке во время выполнения, никто никогда этого не делает, и это никогда не имеет значения.

Схема должнасодержат только узлы контента, это будет прекрасно работать в Mapper, Properties и т. д.

Поскольку вы не проверяете, если схема является действительной xml, она просто отправится в поездку и будетигнорируется.

Чтобы проверить в VS, просто извлеките узлы схемы.

...