Генерация классов cXML из xsd выдает ошибку "Элемент" uri:ds:Signature "отсутствует".

Я пытаюсь сгенерировать классы cXML для версии cXML 1.2.034 согласно http://cxml.org/ XSD (конвертируется Visual Studio).

Я преобразовал cXML.dtd в xsd. Потом пробовал бегать:

xsd.exe cXML.xsd /c /language:CS /n:MyNamespace

Но это бросило ошибку:

Error: Error generating classes for schema 'cXML'. - The element 'uri:ds:Signature' is missing.

Тогда я нашел эту проблему здесь: Генерация классов C# из XSD, которая кажется актуальной. Поэтому я скачал xmldsig-core-schema.xsd с http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd

Потом я побежал

xsd.exe cXML.xsd xmldsig-core-schema.xsd /c /language:CS /n:MyNamespace

Но это бросило

Error: Error generating classes for schema 'cXML_xmldsig-core-schema'. - The element 'uri:ds:Signature' is missing.

Я заблудился относительно того, что "uri: ds: Подпись" должен быть?

я могу увидеть это

<xs:schema xmlns="http://tempuri.org/cXML" xmlns:ds="uri:ds" elementFormDefault="qualified" targetNamespace="http://tempuri.org/cXML" xmlns:xs="http://www.w3.org/2001/XMLSchema">

кажется неправильно. Я изменил это на xmlns:ds="http://www.w3.org/2000/09/xmldsig#" но та же проблема сохраняется.

Я также попытался добавить ссылку на локальную подпись xsd, добавив

<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> и да, у меня есть файл в том же каталоге, что и мой собственный файл xsd.

1 ответ

Решение

У меня такая же проблема. Я попробовал несколько таких попыток, как вы (импортируйте схему https://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd, но все же нашел способ).

В моем случае я просто удаляю всю строку, которая была проблематичной:

<!-- COMMENTED <xs:element minOccurs="0" maxOccurs="unbounded" ref="ds:Signature" /> -->

и тогда он отлично работает.

Другие вопросы по тегам