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

XML验证触发cvc-complex-type.2.4.d错误,求解决方案

XML验证错误cvc-complex-type.2.4.d的解决思路

错误核心原因

这个错误是因为你的XML结构完全不符合XSD的约束定义:当前XSD规定<dlc>元素只能包含一个子元素(要么是<nazwa>,要么是<wydane>),但实际XML里<dlc>下交替出现了多组<nazwa>+<wydane>,违反了规则导致验证失败。

你的XSD问题点

当前<dlc>的XSD定义存在限制:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">
    <xs:element name="nazwa" type="xs:string"/>
    <xs:element name="wydane" type="xs:string"/>
    
    <xs:element name="dlc">
        <xs:complexType mixed="false">
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="wydane"/>
                    <xs:element ref="nazwa"/>
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="rodzaj" type="xs:string"/>
        </xs:complexType>
    </xs:element>
</xs:schema>

这里的<xs:choice>只允许二选一,外层<xs:sequence>默认只允许出现一次,所以<dlc>只能有一个子元素,和你XML里的多组结构完全不匹配。

两种可行解决方法

方法1:规范XML结构(推荐)

把每个DLC的名称和发布日期封装成独立的<dlc-item>元素,让结构更清晰:

修改后的XSD

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">
    <xs:element name="nazwa" type="xs:string"/>
    <xs:element name="wydane" type="xs:string"/>
    
    <!-- 新增单个DLC项的定义 -->
    <xs:element name="dlc-item">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="nazwa"/>
                <xs:element ref="wydane"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="dlc">
        <xs:complexType mixed="false">
            <xs:sequence>
                <!-- 允许无限次出现dlc-item -->
                <xs:element ref="dlc-item" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:attribute name="rodzaj" type="xs:string"/>
        </xs:complexType>
    </xs:element>
</xs:schema>

对应调整后的XML片段

<dlc rodzaj="PayToPlay">
    <dlc-item>
        <nazwa>By blood alone</nazwa>
        <wydane>2022.09.27</wydane>
    </dlc-item>
    <dlc-item>
        <nazwa>No step back</nazwa>
        <wydane>2021.11.23</wydane>
    </dlc-item>
    <!-- 其余DLC项依此类推 -->
</dlc>

方法2:直接适配现有XML结构

如果不想修改XML,直接调整XSD,允许<nazwa>+<wydane>成对重复出现:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">
    <xs:element name="nazwa" type="xs:string"/>
    <xs:element name="wydane" type="xs:string"/>
    
    <xs:element name="dlc">
        <xs:complexType mixed="false">
            <xs:sequence>
                <!-- 定义一组nazwa+wydane,并允许无限次重复 -->
                <xs:sequence maxOccurs="unbounded">
                    <xs:element ref="nazwa"/>
                    <xs:element ref="wydane"/>
                </xs:sequence>
            </xs:sequence>
            <xs:attribute name="rodzaj" type="xs:string"/>
        </xs:complexType>
    </xs:element>
</xs:schema>

这个方案无需修改现有XML,直接适配你当前的结构。

额外提醒

你的XML片段里还有未闭合的标签(比如<HeartsOfIron4>),后续验证时也会报错,记得补全所有闭合标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:35:27