Тип XML-схемы не объявлен или отсутствует

Я боролся с этим в течение последнего дня и читаю множество других постов здесь на SO, которые все дают один и тот же совет для моей проблемы. Однако этот совет не работает для меня. Я использую файлы xsd для формата CDA из HL7, чтобы попытаться сгенерировать мои классы (к сожалению, файлы слишком велики для размещения здесь). Вот соответствующие части схемы:

<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 ответ

Решение

РЕШЕНИЕ. Сокращение кода до абсолютного минимума (на запрос) помогло мне выявить проблему. Решением было сделать так, чтобы текст в "type" в объявлении элемента xs: соответствовал "name" в объявлении 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>
Другие вопросы по тегам