Генерация классов 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" /> -->
и тогда он отлично работает.