Тип XML-схемы не объявлен или отсутствует - PullRequest
0 голосов
/ 27 июня 2018

Я боролся с этим в течение последнего дня и читал множество других постов здесь на ТАК, которые все дают один и тот же совет для моей проблемы. Однако этот совет не работает для меня. Я использую файлы 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 Ответ

0 голосов
/ 28 июня 2018

РЕШЕНИЕ: После сокращения кода до абсолютного минимума (за запрос) это помогло мне выделить проблему. Решением было сделать так, чтобы текст в '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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...