0

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

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

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

有没有其他方法可以进行这种转换?

谢谢你的帮助!

4

1 回答 1

1

我发现了这个老问题:XSD 序列显示为模棱两可!,所以我检查了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 的情况下进行这种转换。

于 2012-07-30T15:11:30.207 回答