【问题标题】:Is there a way to handle/ignore inline xsd in received xml file in biztalk?有没有办法处理/忽略biztalk中收到的xml文件中的内联xsd?
【发布时间】:2019-10-16 23:29:00
【问题描述】:

客户端发送一个包含 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>

【问题讨论】:

    标签: xsd biztalk biztalk-schemas


    【解决方案1】:

    我认为这实际上不会造成问题。

    首先,不要费心在运行时进行验证,从来没有人这样做过,这并不重要。

    架构应该只包含内容节点,这将在映射器、属性等中正常工作。

    由于您没有进行验证,只要 Schema 是有效的 xml,它就会顺其自然而被忽略。

    要在 VS 中验证,只需取出 Schema 节点即可。

    【讨论】:

    • 这就像一个魅力,我不敢相信我没有从一开始就尝试这个。谢谢
    猜你喜欢
    • 2020-06-30
    • 2015-04-17
    • 2010-10-21
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 2019-01-23
    • 2012-10-19
    相关资源
    最近更新 更多