生成 xsd 文件时出现问题,因为引用了另一个模式中的元素

Problems with generating xsd file because ref to a element in another schema

我在从模式生成 xsd 文件时遇到了一些问题,因为它引用了另一个模式中的元素。你们中有人知道如何解决这个问题吗?这是我试图从中创建 xsd 的架构。

    <?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="urn:ean.ucc:2" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:ean.ucc:2" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import />
  <xs:element name="message">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="entityIdentification" />
        <xs:element name="transaction">
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="entityIdentification" />
              <xs:element ref="command" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="documentCommand">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="documentCommandHeader" />
        <xs:element ref="documentCommandOperand" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

如您所见,它引用了许多其他元素。我创建此模式的方法是使用 vs2013 中的工具从 XML 文件创建模式。

希望你们中的一些人知道如何解决这个问题,谢谢!

您需要阅读并理解 XML 命名空间的工作原理,以及当一个模式使用另一个模式的类型时,它们与两个模式之间的关系有何关联。

This article 是这种理解的绝佳起点;尽管使用的工具是付费的,但我不以任何方式推广或附属。

相关位:

CommonTypes.xsd

<?xml version="1.0" encoding="utf-16"?>
<xs:schema targetNamespace="http://NamespaceTest.com/CommonTypes" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">

  <xs:complexType name="AddressType">
    <xs:sequence>
      <xs:element name="Line1" type="xs:string" />
      <xs:element name="Line2" type="xs:string" />
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="PriceType">
    <xs:restriction base="xs:decimal">
      <xs:fractionDigits value="2" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="PaymentMethodType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="VISA" />
      <xs:enumeration value="MasterCard" />
      <xs:enumeration value="Cash" />
      <xs:enumeration value="Amex" />
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

CustomerTypes.xsd

<?xml version="1.0" encoding="utf-16"?>
<xs:schema     xmlns:cmn="http://NamespaceTest.com/CommonTypes" 
               targetNamespace="http://NamespaceTest.com/CustomerTypes" 
               xmlns:xs="http://www.w3.org/2001/XMLSchema"
               elementFormDefault="qualified">
    <xs:import schemaLocation="CommonTypes.xsd" 
               namespace="http://NamespaceTest.com/CommonTypes"/>
  <xs:complexType name="CustomerType">
    <xs:sequence>
      <xs:element name="Name" type="xs:string" />
      <xs:element name="DeliveryAddress" type="cmn:AddressType" />
      <xs:element name="BillingAddress" type="cmn:AddressType" />
    </xs:sequence>
  </xs:complexType>
</xs:schema>