【问题标题】:How to configure schema to accept xml document with namespaces without prefixes如何配置架构以接受带有不带前缀的命名空间的 xml 文档
【发布时间】:2018-11-05 14:16:40
【问题描述】:

我收到一份具有以下结构的文档:

<Postnumre xmlns="http://Customer.Vejregister.Schemas.Vejregister_PostNr_XML.PostNr_XML">
    <Postnr xmlns="http://Customer.Vejregister.Schemas.Vejregister_PostNr_XML.PostNr_XML">
        <Sekvensnummer>sekvensnummer</Sekvensnummer>
        <Tidspunkt>tidspunkt</Tidspunkt>
        <Operation>operation</Operation>
        <PostNr>nr</PostNr>
        <PostnrNavn>navn</PostnrNavn>
        <Stormodtager>stormodtager</Stormodtager>
    </Postnr>
    <Postnr xmlns="http://Customer.Vejregister.Schemas.Vejregister_PostNr_XML.PostNr_XML">
        <Sekvensnummer>1</Sekvensnummer>
        <Tidspunkt>2014-08-20T11:17:50.644Z</Tidspunkt>
        <Operation>insert</Operation>
        <PostNr>0800</PostNr>
        <PostnrNavn>Høje Taastrup</PostnrNavn>
        <Stormodtager>1</Stormodtager>
    </Postnr>
</Postnumre>

如你所见,它在根节点和所有子节点上都有相同的命名空间,没有前缀。

在我的架构上,我已将 targetNamespace 设置为上述命名空间,但是当根据架构验证此文档的实例时,我收到返回“验证实例失败”的消息。

是否可以将我的架构配置为允许此类文档?我不确定它为什么会失败,因为我使用的是相同的命名空间。

架构代码:

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://Customer.Vejregister.Schemas.Vejregister_PostNr_XML.PostNr_XML" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://Customer.Vejregister.Schemas.Vejregister_PostNr_XML.PostNr_XML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Postnumre">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="Postnr">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Sekvensnummer" type="xs:string" />
              <xs:element name="Tidspunkt" type="xs:string" />
              <xs:element name="Operation" type="xs:string" />
              <xs:element name="PostNr" type="xs:string" />
              <xs:element name="PostnrNavn" type="xs:string" />
              <xs:element name="Stormodtager" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

【问题讨论】:

  • 嗨,莱思。我的回答是否有助于解决您的问题?

标签: xml validation schema biztalk


【解决方案1】:

我从您的示例 XML 生成了一个架构,它生成了以下架构。

主要区别在于它添加了elementFormDefault="qualified",您可以通过单击顶部的&lt;Schema&gt; 并将Element FormDefault 设置为Qualified 来设置。

<?xml version="1.0" encoding="utf-16"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://Customer.Vejregister.Schemas.Vejregister_PostNr_XML.PostNr_XML" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Postnumre">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="Postnr">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Sekvensnummer" type="xs:string" />
              <xs:element name="Tidspunkt" type="xs:string" />
              <xs:element name="Operation" type="xs:string" />
              <xs:element name="PostNr" type="xs:string" />
              <xs:element name="PostnrNavn" type="xs:string" />
              <xs:element name="Stormodtager" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

【讨论】:

    猜你喜欢
    • 2015-06-05
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多