在过去的一天里,我一直在与之抗争,并在此处阅读了无数其他关于我的问题的相同建议的文章。但是,该建议对我不起作用。我正在使用HL7的CDA格式的xsd文件尝试生成我的类(不幸的是,这些文件太大,无法在此处发布)。这是模式的相关部分:
<xs:schema targetNamespace="urn:hl7-org:v3" xmlns:mif="urn:hl7-org:v3/mif" xmlns="urn:hl7-org:v3" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="POCD_MT000040.ClinicalDocument" type="ClinicalDocument"/> <!-- error message points to the "<xs:element" on this line -->
<xs:complexType name="POCD_MT000040.ClinicalDocument">
<xs:sequence>
<xs:element name="realmCode" type="CS" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="typeId" type="POCD_MT000040.InfrastructureRoot.typeId"/>
<xs:element name="templateId" type="II" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="id" type="II"/>
<xs:element name="code" type="CE"/>
<!-- many more elements follow -->
</xs:sequence>
</xs:complexType>
在SO上,我发现了数十条报告类似消息的人的帖子。他们所有人都说,问题是缺少默认命名空间,或者complexType需要随附的“ xs:element”声明。如您所见,我两者都有。那为什么会这样呢?
我应该补充一点,我尝试使用XmlSpy从xsd生成类,并报告相同的错误。但是,我的特定工具来自.NET。我从Visual Studio,xsd.exe和xml2code收到了相同的错误。
任何想法或想法都将不胜感激!
答案 0 :(得分:2)
解决方案: 将代码缩减到绝对最小值(按请求)后,它帮助我隔离了问题。解决方案是使xs:element声明中的“类型”中的文本与xs:complexType声明中的“名称”相匹配。进行此更改使xsd.exe工具可以从.xsd文件生成类。
<xs:element name="POCD_MT000040.ClinicalDocument" type="ClinicalDocument"/>
<xs:complexType name="ClinicalDocument"> <!-- took out "POCD_MT00040." -->
<xs:sequence>
<xs:element name="realmCode" type="CS" minOccurs="0" maxOccurs="unbounded"/>
<!-- many more elements follow -->
</xs:sequence>
</xs:complexType>