萨拉米香肠切片与C#中的俄罗斯娃娃XSD验证

时间:2018-04-06 11:09:19

标签: c# xml validation xsd

我注意到如果我使用 Salami Slice XSD架构格式, C#中的 XML验证器可以正常工作。

但是,如果我在俄罗斯娃娃格式中使用相同的 XSD ,则 XML验证器会失败。

请注意,在这两种情况下,我都使用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'.

1 个答案:

答案 0 :(得分:0)

该消息告诉我(来自我的最小意大利语)它抱怨属性attributeFormDefault和elementFormDefault未被声明,这反过来表明它试图验证架构,而不是实例文件。所以我认为这与你调用验证器的方式有关。