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

‘restriction’内容必须匹配,无法为XML文档创建有效.xsd文件

解决XSD中"The Content Of 'restriction' Must Match"错误并生成匹配你XML的有效XSD

这个错误大概率是因为你在<restriction>标签里的内容不符合XSD规范——要么是子元素顺序不对,要么是放了该标签不允许的内容。我先帮你梳理清楚你的XML结构,然后生成完全匹配的有效XSD,彻底解决这个问题。

先明确你的XML核心结构:

  • 根元素<Information>,包含任意多个<game>子元素
  • 每个<game>包含:空元素<pic>、<number>、带id属性的<title>、<developer>、<publisher>、<release>(嵌套<year>、<month>、<day>)、<platform>

下面是完全适配你XML的有效XSD代码,我已经规范处理了所有restriction场景,确保结构合规:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <!-- 定义release的复合类型 -->
    <xs:complexType name="ReleaseType">
        <xs:sequence>
            <xs:element name="year" type="YearType"/>
            <xs:element name="month" type="xs:string"/>
            <xs:element name="day" type="DayType"/>
        </xs:sequence>
    </xs:complexType>

    <!-- 年份的restriction:强制四位数字格式 -->
    <xs:simpleType name="YearType">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{4}"/>
        </xs:restriction>
    </xs:simpleType>

    <!-- 日期的restriction:允许1-2位数字 -->
    <xs:simpleType name="DayType">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{1,2}"/>
        </xs:restriction>
    </xs:simpleType>

    <!-- 序号的restriction:正整数 -->
    <xs:simpleType name="NumberType">
        <xs:restriction base="xs:positiveInteger"/>
    </xs:simpleType>

    <!-- 带id属性的title类型 -->
    <xs:complexType name="TitleType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:positiveInteger" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <!-- 定义game的复合类型 -->
    <xs:complexType name="GameType">
        <xs:sequence>
            <xs:element name="pic" type="xs:string" nillable="true"/>
            <xs:element name="number" type="NumberType"/>
            <xs:element name="title" type="TitleType"/>
            <xs:element name="developer" type="xs:string"/>
            <xs:element name="publisher" type="xs:string"/>
            <xs:element name="release" type="ReleaseType"/>
            <xs:element name="platform" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>

    <!-- 根元素Information -->
    <xs:element name="Information">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="game" type="GameType" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

关键注意事项(避免restriction错误的核心):

  • <restriction>标签只能包含XSD允许的子元素,比如<pattern>、<minInclusive>等,不能放置无关内容
  • 简单类型的restriction必须基于一个合法的基础类型(如xs:string、xs:integer),且子元素顺序要严格符合规范
  • 你的XML里<pic>是空元素,所以我设置了nillable="true"允许它为空
  • 额外提醒:你的XML中第12个<game>的<month>拼写错误(Octover→October),建议修正避免数据不一致

最后,把这个XSD保存为schema.xsd,和你的XML放在同一目录下,XML里的xsi:schemaLocation可以调整为更规范的写法:

<Information xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xsi:schemaLocation="schema.xsd">

这样就能彻底解决你遇到的restriction内容不匹配错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:06:24