验证两个XML模式的兼容性

时间:2013-01-17 23:33:32

标签: c# xml f# xsd

是否有.NET调用来验证一个XML架构是否向后兼容另一个?

1 个答案:

答案 0 :(得分:2)

没有。您必须使用XmlSchema类来解析这两个模式,然后编写进行比较的代码。

XML比较/差异不会削减它,因为两个XSD甚至可以相同并且具有非常不同的XML表示 - 例如:

<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/XMLSchema.xsd"
    xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="test">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="str" type="xs:string"/>
      </xs:sequence>
      <xs:attribute name="num" type="xs:int"/>
    </xs:complexType>
  </xs:element>

</xs:schema>

<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/XMLSchema.xsd"
    xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="test" type="test">
  </xs:element>

  <xs:complexType name="test">
    <xs:sequence>
      <xs:element name="str" type="xs:string"/>
    </xs:sequence>
    <xs:attribute name="num" type="xs:int"/>
  </xs:complexType>

</xs:schema>