使用Xsd2Code将PMML XML架构(xsd)转换为C#对象时出错

时间:2012-07-30 10:28:05

标签: c# .net xml xsd xsd2code

我尝试使用Xsd2Code(PMML 3.0 Schema)从PMML 3.0 Schema(Xsd2Code)创建C#对象,但我得到的只是错误:

  

错误:元素“http://www.dmg.org/PMML-3_0:Array”的多个定义导致内容模型变得模糊不清。必须形成内容模型,使得在元素信息项序列的验证期间,可以在不检查元素信息项序列的内容或属性的情况下,直接地,间接地或隐含地包含在其中依次用于尝试验证序列中的每个项目的粒子。该项目,并且没有关于序列其余部分中的项目的任何信息。

我很确定这个规范是正确的。我也试过VS的xsd.exe,但没有成功。

还有其他方法可以进行此类转换吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我发现了这个老问题:XSD sequence shows as abiguous!,所以我检查了xsd http://www.dmg.org/v3-0/pmml-3-0.xsd,我找到了这个部分:

<xs:element name="ContStats">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Extension" minOccurs="0" maxOccurs="unbounded" />
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Interval" />
        <xs:group minOccurs="0" ref="INT-ARRAY" />
        <xs:group minOccurs="0" maxOccurs="2" ref="NUM-ARRAY" />
      </xs:sequence>
      <xs:attribute name="totalValuesSum" type="NUMBER" />
      <xs:attribute name="totalSquaresSum" type="NUMBER" />
    </xs:complexType>
  </xs:element>

就像在我链接的问题的答案中一样,如果验证器发现一个数组无法判断它是INT-ARRAY还是最大的2个NUM-ARRAY之一。

我无法判断是否有办法在不修改xsd的情况下进行此转换。