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

XML Schema验证报错:元素'name'不符合内容模型'(name)'求解决

搞定你的XML Schema验证问题

嘿,刚看完你的代码,立刻就发现了问题所在——你的Schema里有几个地方没考虑到元素的重复出现,这就是导致验证报错的核心原因!我来一步步帮你修正,顺便把潜在的小问题也处理掉:

1. 允许<presenters>下有多个<name>元素

你XML里每个<presenters>都有好几位演讲者,但你的Schema里<xs:element name="name">默认只允许出现1次(XML Schema中maxOccurs默认值是1),这就是第17行报错的直接原因。你需要给它加上maxOccurs="unbounded",让它能接受多个<name>节点:

<xs:element name="name" maxOccurs="unbounded">

2. 允许根元素下有多个<presentation>

同样的道理,你的XML里有两场演讲,但Schema里的<presentation>元素也没设置重复次数,所以也要加上maxOccurs="unbounded":

<xs:element name = "presentation" maxOccurs="unbounded">

3. 修正id属性的正则表达式

你给id写的<xs:pattern value="[X-Y][0-9][0-9][0-9]"/>有点小问题:[X-Y]是匹配从X到Y的所有字母(包括中间的W、V这些),但你的XML里id都是X或Y开头的,应该改成[XY];另外[0-9][0-9][0-9]可以简化成[0-9]{3},更简洁:

<xs:pattern value="[XY][0-9]{3}"/>

4. 小细节:清理XML里的多余空格

你的XML里<last>Presley </last>末尾多了个空格,虽然Schema不会报错,但为了数据整洁,建议把这个空格去掉。

修正后的完整Schema

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="jon:presentations" xmlns:prs="jon:presentations">
  <xs:element name = "presentations">
    <xs:complexType>
      <xs:sequence>
        <xs:element name = "presentation" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name = "topic">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:string">
                      <xs:attribute name="genre">
                        <xs:simpleType>
                          <xs:restriction base="xs:string">
                            <xs:enumeration value="Art"/>
                            <xs:enumeration value="Music"/>
                            <xs:enumeration value="Science"/>
                            <xs:enumeration value="Technology"/>
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
              <xs:element name="presenters">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="name" maxOccurs="unbounded">
                      <xs:complexType mixed="true">
                        <xs:sequence>
                          <xs:element name="first" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
                          <xs:element name="middle" type="xs:string" minOccurs="0" maxOccurs="1"/>
                          <xs:element name="last" type="xs:string"/>
                        </xs:sequence>
                        <xs:attribute name="title" use="required">
                          <xs:simpleType>
                            <xs:restriction base="xs:string">
                              <xs:enumeration value="Mr."/>
                              <xs:enumeration value="Mrs."/>
                              <xs:enumeration value="Ms."/>
                              <xs:enumeration value="Miss"/>
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:attribute>
                        <xs:attribute name="id">
                          <xs:simpleType>
                            <xs:restriction base="xs:ID">
                              <xs:pattern value="[XY][0-9]{3}"/>
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:attribute>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="date" type="xs:date"/>
            <xs:attribute name="length" type="xs:duration"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

现在用这个Schema去验证你的XML,肯定能顺利通过啦!刚开始玩XML Schema很容易忽略这些默认的出现次数设置,多试几次就熟练了~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:35:37