【问题标题】:Salami Slice vs Russian Doll XSD Validation in C#C# 中的意大利腊肠切片与俄罗斯娃娃 XSD 验证
【发布时间】:2018-04-06 11:09:19
【问题描述】:

我注意到,如果我使用 Salami Slice XSD Schema 格式,C# 中的 XML Validator 可以正常工作。

但是,如果我在 Russian Doll 格式中使用相同的 XSDXML 验证器 会失败。

请注意,在这两种情况下,我都使用 Visual Studio 提供的 xsd.exe 生成 xsdclass.cs

有人可以解释为什么?我花了 30 分钟来理解它,我很头疼。


俄罗斯娃娃格式(不工作):

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="kyactusprofile">
    <xs:complexType>
      <xs:sequence>
        <xs:element type="xs:string" name="username"/>
        <xs:element type="xs:string" name="userid"/>
        <xs:element type="xs:string" name="useDefaultFolder"/>
        <xs:element type="xs:string" name="autoAcceptDownloads"/>
        <xs:element type="xs:string" name="visible"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Salami Slice 中的相同 XSD(工作):

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="username" type="xs:string"/>
  <xs:element name="userid" type="xs:string"/>
  <xs:element name="useDefaultFolder" type="xs:string"/>
  <xs:element name="autoAcceptDownloads" type="xs:string"/>
  <xs:element name="visible" type="xs:string"/>
  <xs:element name="kyactusprofile">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="username"/>
        <xs:element ref="userid"/>
        <xs:element ref="useDefaultFolder"/>
        <xs:element ref="autoAcceptDownloads"/>
        <xs:element ref="visible"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

我得到的错误是:

Warning: Matching schema not found.  No validation occurred.Impossibile trovare informazioni sullo schema per l'elemento 'http://www.w3.org/2001/XMLSchema:schema'. Warning: Matching schema not found.  No validation occurred.Impossibile trovare informazioni sullo schema per l'attributo 'attributeFormDefault'. Warning: Matching schema not found.  No validation occurred.Impossibile trovare informazioni sullo schema per l'attributo 'elementFormDefault'. Warning: Matching schema not found.  No validation occurred.Impossibile trovare informazioni sullo schema per l'elemento 'http://www.w3.org/2001/XMLSchema:element'.

【问题讨论】:

  • 你真的可以用工作版本反序列化数据,还是你只是没有收到验证错误?
  • 您是否收到任何异常或其他错误消息?如果是这样,您能否将其包含在问题中?
  • 我能够反序列化/序列化两种格式的数据,但使用其他 XSD 验证器。 WPF C# XmlSchemaSet 仅适用于 SalamiSlice。
  • 我没有收到任何错误,只是说 XML 对 XSD 无效。
  • 这个怎么说;确切的信息是什么?

标签: c# xml validation xsd


【解决方案1】:

该消息向我暗示(来自我最小的意大利语)它抱怨属性 attributeFormDefault 和 elementFormDefault 没有被声明,这反过来表明它正在尝试验证架构,而不是实例文档。所以我认为这与您调用验证器的方式有关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    相关资源
    最近更新 更多