cvc-enumeration-valid: 值“2”对于枚举“[1]”不是有效的。它必须是枚举中的值

cvc-enumeration-valid: Value '2' is not facet-valid with respect to enumeration '[1]'. It must be a value from the enumeration

我在验证时遇到错误 XML:

XSD

<xs:simpleType name="XYZ">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:enumeration value="1">
      </xs:enumeration>
      <xs:enumeration value="2">
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

XML 值:

 <XYZ>2</XYZ>

错误

cvc-enumeration-valid: Value '2' is not facet-valid with respect to enumeration '[1]'. It must be a value from the enumeration.

任何人都可以帮助我理解这个问题吗? 如何解决?

错误信息,

cvc-enumeration-valid: Value '2' is not facet-valid with respect to enumeration '[1]'. It must be a value from the enumeration.

和你问题中的 simpleType 不同意。

错误消息暗示只允许 1 但遇到了 2;您的类型定义确实允许 12.

要引出与您的 xs:simpleType 有关的实际错误消息,您的 XML 必须使用一个值,比如 3,这是不允许的。然后,您会收到如下错误消息:

cvc-enumeration-valid: Value '3' is not facet-valid with respect to enumeration '[1, 2]'. It must be a value from the enumeration.

因此,您的(第一个,也许只是?)错误在于认为发布的 xs:simpleType 定义与该错误消息有任何关系。

我已经开始工作了,我认为它解决了你的问题,但正如 KJ 在没有示例的情况下指出的那样,我们真的只是在猜测。

这是一个示例 XML

<xml>
    <XYZ>3</XYZ>
</xml>

和示例模式

<xs:schema 
    elementFormDefault="qualified" 
    attributeFormDefault="unqualified" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="xml">
    <xs:complexType>
        <xs:sequence>
            <xs:element name='XYZ'>
              <xs:simpleType>
                <xs:restriction base="xs:nonNegativeInteger">
                  <xs:enumeration value="1"/>
                  <xs:enumeration value="2"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
 </xs:element>
</xs:schema>

值为 3(无效)时,出现以下异常。

The 'XYZ' element is invalid - The value '3' is invalid according to its datatyp
e 'NonNegativeInteger' - The Enumeration constraint failed. Line: 2 Column: 10