xml模式类型未声明或丢失

时间:2018-06-27 15:04:36

标签: xml xsd hl7-cda

在过去的一天里,我一直在与之抗争,并在此处阅读了无数其他关于我的问题的相同建议的文章。但是,该建议对我不起作用。我正在使用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收到了相同的错误。

任何想法或想法都将不胜感激!

1 个答案:

答案 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>