元素丢失...尝试使用<element ref = />生成类

5
使用VS 2013附带的XSD工具,当我尝试从包含<xsd:element ref=.../>的xsd中生成类时,会收到以下消息:

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

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

错误:为模式“test”生成类时出错。 - 缺少“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模式设计师也没有报错。我怀疑这只是工具无法实现的功能。
有什么想法可以继续吗?

你收到的错误信息是导入不正常的很好证据;如果它是正常的,元素就不会是未定义的。你的 xsd:import 元素没问题,但 DSig 模式几乎肯定没有成功导入;一个常见的原因是找不到模式文档。 - C. M. Sperberg-McQueen
1个回答

19

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接