xsd.exe 找不到类型声明

xsd.exe not finding type declarations

我正在尝试从 IRS 网站上提供的 XSD 文件生成 class 文件:

https://www.irs.gov/businesses/corporations/fatca-xml-schemas-and-business-rules-for-form-8966

可在此处下载架构文档:https://www.irs.gov/pub/fatca/fatcaxml_v2.0.zip

(FATCAXML_v2.0 (25KB) - FATCA 报告的主要架构。)

zip 文件包含 4 个文件:

在第一个文档 FatcaXML_v2.0.xsd 中,有 3 个 xsd:import 节点似乎引用了其他 3 个 xsd 文档。

尝试使用 xsd.exe 对 FatcaXML_v2.0.xsd 生成我的 classes 时,我收到多个关于未声明类型的错误,例如:

Schema validation warning: Type 'urn:oecd:ties:stffatcatypes:v2:StringMax200_Type' is not declared. Line 259, position 5.

但是,我确实在 stffatcatypes_v2.0.xsd 中看到了这种类型的声明(它被导入到 'FatcaXML_v2.0.xsd' 的顶部):

<xsd:simpleType name="StringMax200_Type">
  <xsd:annotation>
    <xsd:documentation>Defines a string with maximum length of 200
    </xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
        <xsd:minLength value="0"/>
        <xsd:maxLength value="200"/>
    </xsd:restriction>
</xsd:simpleType>

如何让 xsd.exe 识别这些类型定义?

提前致谢

为了使用

导入 XSD.exe 到 'honour' 模式
<xsd:import namespace="importNamespace" schemaLocation="schema.xsd"/> 

声明,架构需要位于同一文件夹中,并且您需要在命令行中指定所有架构。还应按照从基本模式到父模式的使用顺序指定它们。因此,如果您有一个架构,parent.xsd 导入 child.xsd 进而导入 base.xsd 那么您的命令行需要如下所示

xsd base.xsd child.xsd parent.xsd [options]

N.B. 模式可能不需要都在同一个位置,但如果不是,我怀疑相对位置(相对于你所在的位置 运行 XSD 应该在主模式的文件夹中)需要在每个模式的命令行上指定并且可能应该匹配 <import schemaLocation 属性但我不在一个位置暂时确认一下。