限制 XML 架构中的值

Restricting values in XML Schema

我有一个包含两个元素的 XSD,namecolor。想将名称的长度限制为 5。出现错误:

simpleType element not supported in this context.

据我了解,这些是可用于在架构文件中声明元素的自定义类型。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="fruits">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="name" />
                    <xs:simpleType>
                        <xs:restriction base="xs:name">
                            <xs:length="5">
                        </xs:restriction>
                    </xs:simpleType>
                </xs:/element>
                <xs:element name="color" type="xs:string" minOccurs="0" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

XML:

<?xml version="1.0" encoding="UTF-8"?>
<fruits 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="simplexsd2.xsd">
    <name>Apple</name>
</fruits>

在您 XSD 中要修复的多个语法错误中,

  • 过早关闭 xs:element 元素。
  • 格式错误的 xs:length 元素。
  • 关闭标签格式错误。

您的 XSD 已更新为格式正确并支持您对 name 元素的预期验证,以将字符串值限制在长度 5:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="fruits">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="name">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:length value="5"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element name="color" type="xs:string" minOccurs="0" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>