我试图从IRS网站上提供的XSD文件生成类文件:
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文档。
尝试使用针对FatcaXML_v2.0.xsd的xsd.exe生成我的类时,我收到有关未声明类型的多个错误,例如:
Schema validation warning: Type 'urn:oecd:ties:stffatcatypes:v2:StringMax200_Type' is not declared. Line 259, position 5.
但是,我确实在stffatcatypes_v2.0.xsd中看到了此类型的声明(已导入到#39; 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识别这些类型定义?
提前致谢
答案 0 :(得分:0)
为了让XSD.exe使用
导入“荣誉”模式<xsd:import namespace="importNamespace" schemaLocation="schema.xsd"/>
声明,模式需要位于同一文件夹中,您需要在命令行中指定所有模式。它们还应按照从基本模式到父模式的使用顺序进行指定。因此,如果您有一个架构,parent.xsd
导入child.xsd
,而base.xsd
依次导入xsd base.xsd child.xsd parent.xsd [options]
,那么您的命令行需要如下所示
<import schemaLocation
NB 模式可能不需要全部位于同一位置但如果不是,我怀疑相对位置(相对于您运行XSD的位置应该位于主模式的文件夹中) )需要在命令行中为每个模式指定,并且可能应该匹配replacingOccurrences(of:with:)
属性,但我目前无法确认这一点。