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
- isofatcatypes_v1.1.xsd
- oecdtypes_v4.2.xsd
- stffatcatypes_v2.0.xsd
在第一个文档 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
属性但我不在一个位置暂时确认一下。
我正在尝试从 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
- isofatcatypes_v1.1.xsd
- oecdtypes_v4.2.xsd
- stffatcatypes_v2.0.xsd
在第一个文档 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
属性但我不在一个位置暂时确认一下。