You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WMHelp XMLPad校验异常:满足XSD基数要求的奇数个level元素被拒

问题:WMHelp XMLPad校验XSD时仅允许偶数个<level>元素通过

需求是确保每个<levels>列表包含至少2个<level>元素,编写的XSD如下:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="ItemType">
    <xs:sequence>
      <xs:element name="levels">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="level" type="xs:string" minOccurs="2" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="id" type="xs:string"/>
  </xs:complexType>

  <xs:element name="root">
    <xs:complexType>
      <xs:all>
        <xs:element name="items" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="item" type="ItemType" minOccurs="1" maxOccurs="unbounded"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>
</xs:schema>

对应的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="mySchema.xsd">
  <items>
    <item id="1">
      <levels>
        <level>one</level>
      </levels>
    </item>
    <item id="2">
      <levels>
        <level>one</level>
        <level>two</level>
      </levels>
    </item>
    <item id="3">
      <levels>
        <level>one</level>
        <level>two</level>
        <level>three</level>
      </levels>
    </item>
    <item id="4">
      <levels>
        <level>one</level>
        <level>two</level>
        <level>three</level>
        <level>four</level>
      </levels>
    </item>
    <item id="5">
      <levels>
        <level>one</level>
        <level>two</level>
        <level>three</level>
        <level>four</level>
        <level>five</level>
      </levels>
    </item>
  </items>
</root>

使用WMHelp XMLPad校验时,<item id="1">(仅1个<level>)被警告符合预期,但<item id="3">(3个<level>)和<item id="5">(5个<level>)也被意外警告,提示信息:

Element levels {} has invalid structure for schema definition: (level{2..unbounded})

仅含偶数个<level>的<item>(id=2、4)校验通过,奇数个的全部被拒绝。

原因分析

这是WMHelp XMLPad的XSD校验引擎存在Bug,你的XSD写法完全符合W3C XML Schema规范:minOccurs="2" maxOccurs="unbounded"明确允许2个及任意多个(包括奇数个)<level>元素。

这种只允许偶数个元素通过的错误,属于工具自身的实现缺陷,和你的XSD、XML内容无关。

换用其他标准的XSD校验工具(比如XMLSpy、Oxygen XML Editor)验证,这些工具会正确判定只有id=1的元素不符合要求,id=3、5的元素均会校验通过。

内容的提问来源于stack exchange,提问作者Leszek Pachura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 21:17:41