定义我的 sympleTypes 给出 "Type is not declared, or is not a simple type"

Defining my sympleTypes gives "Type is not declared, or is not a simple type"

我已经定义了两个 sympleTypes (CommonTypes.xsd),我想在其他几个 XSD 文件中使用它们(例如 MotorList.xsd)。

我用的是Visual Studio来开发。 Visual Studio 不抱怨任何麻烦。这两个文件都将 'Build Action' 设置为 'Embedded Resource'。但是当我 运行 我的应用程序验证 XSD 文件时,我得到 'Type http://Ford/Mustang/PowerPlugin/CommonTypes:powerType' 未声明,或者不是简单类型'。

怎么了?

感谢您的帮助。

文件CommonTypes.xsd:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://Ford/Mustang/PowerPlugin/CommonTypes">

  <xs:simpleType name="powerType" >
    <xs:restriction base="xs:decimal">
      <xs:minInclusive value="0"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="unitType" final="restriction" >
    <xs:restriction base="xs:string">
      <xs:enumeration value="kW" />
      <xs:enumeration value="PS" />
      <xs:enumeration value="Nm" />
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

文件MotorList.xsd:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://MyNamespace/MyTypes" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           xmlns:commonTypes="http://Ford/Mustang/PowerPlugin/CommonTypes">

  <xs:import namespace="http://Ford/Mustang/PowerPlugin/CommonTypes"
             schemaLocation="CommonTypes.xsd"/>

  <xs:element name="MotorList">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="Prime">
          <xs:complexType>
            <xs:attribute name="cylinder" type="xs:positiveInteger" use="required" />
            <xs:attribute name="power" type="commonTypes:powerType" use="required" />
            <xs:attribute name="unit" type="commonTypes:unitType" use="optional" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

您的架构文档没有问题(我用 Saxon 测试了它们)。因此,问题与您使用它们的方式有关(您很少告诉我们)。一种可能是模式处理器实际上没有找到 CommonTypes.xsd 文档 - 一种检查它的好方法是引入故意错误并查看它是否被报告。然后告诉我们您如何调用失败的验证(以及您使用的模式处理器)。