从xsd生成cXML类会引发错误"元素' uri:ds:签名'不见了。"

时间:2017-07-26 06:35:30

标签: xml xsd dtd xsd.exe cxml

我试图根据http://cxml.org/ XSD(由visual studio转换)为版本cXML 1.2.034生成cXML类。

我将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.

然后我在这里找到了这个问题:Generating C# classes from XSD这似乎是相关的。所以我从http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd下载了 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:Signature'"应该是吗?

我可以看到

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

答案 0 :(得分:2)

我遇到了同样的问题。我尝试了几个像你一样的尝试(导入this other SO question架构,但确实找到了)。

就我而言,我只是删除了有问题的整行:

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

然后它完美地运作。