【问题标题】:"The element is missing.." trying to generate class with <element ref = />“缺少元素..”尝试使用 <element ref = /> 生成类
【发布时间】:2015-05-08 07:24:26
【问题描述】:

使用 VS 2013 附带的 XSD 工具,我收到以下消息,试图从包含 &lt;xsd:element ref=.../&gt; 的 xsd 生成一个类 -

架构验证警告:“http://www.w3.org/2000/09/xmldsig#:KeyName”元素未声明。第 14 行,位置 8。

警告:无法验证架构。类生成可能会失败或产生不正确的结果。

错误:为模式“测试”生成类时出错。 - 缺少元素“http://www.w3.org/2000/09/xmldsig#:Signature”。

这是一个演示问题的缩减 xsd:

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema id="test"
    targetNamespace="http://tempuri.org/test.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/test.xsd"
    xmlns:mstns="http://tempuri.org/test.xsd"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:sig="http://www.w3.org/2000/09/xmldsig#"
>
  <xsd:import schemaLocation="xmldsig-core-schema.xsd" namespace="http://www.w3.org/2000/09/xmldsig#" />

  <xsd:complexType name="test" >
    <xsd:sequence >
      <xsd:element ref="sig:Signature" minOccurs="0" maxOccurs="unbounded"></xsd:element>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:element type="test" name="top"/>
</xsd:schema>

我很确定导入和命名空间没问题。 Resharper 和 VS Schema Designer 没有抱怨。我怀疑这是该工具无法做到的。

有什么想法可以继续吗?

【问题讨论】:

  • 您收到的错误消息很好地证明了导入不正常;如果没问题,元素就不会是未定义的。您的 xsd:import 元素很好,但几乎可以肯定 DSig 模式没有被成功导入;一个常见的原因是找不到架构文档。

标签: c# xsd schema xsd.exe


【解决方案1】:

原来这里已经回答过了。

https://stackoverflow.com/a/17278163/2516770

我需要将导入的文件添加到xsd命令行参数的文件列表中:

xsd test.xsd xmldsig-core-schema.xsd /c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    相关资源
    最近更新 更多