XSD文件以为根元素,需声明命名空间;简单元素用type指定内置类型,复杂结构用包裹并配合等指示器定义嵌套关系,支持类型复用与正则、枚举等约束。

写一个可用的 XSD 文件不难,关键在于理解它的核心结构和常用写法。它本质是一个 XML 文件,用来描述另一个 XML 文档“长什么样、能填什么、怎么嵌套”。下面直接讲实用要点。
最简 XSD 结构
所有 XSD 文件都以 为根元素,必须声明命名空间:
-
xmlns:xs="http://www.w3.org/2001/XMLSchema"—— 这是固定写法,告诉解析器你用的是标准 XSD 语法 - 可选但推荐加
elementFormDefault="qualified",表示 XML 实例中所有元素都要带命名空间前缀(或按 targetNamespace 自动限定) - 如果要定义自己的命名空间,加上
targetNamespace和默认命名空间声明xmlns="..."
最简示例(验证 ):
定义简单元素和属性
没有子元素、没有属性的元素叫“简单元素”,直接用 type 指定内置类型:
-
→ 允许29.99 -
→ 只接受整数 -
→ 格式必须是YYYY-MM-DD
属性只能出现在 xs:complexType 内部,用 xs:attribute 定义:
定义含子元素的复杂结构
只要元素里有子元素或属性,就必须用 xs:complexType 包裹,并用容器指示器说明子元素关系:
-
:子元素必须按声明顺序出现,各出现一次(默认) -
:子元素中**只选其一**,如或 -
:子元素可任意顺序,且最多出现一次(XSD 1.0 限制) - 控制次数:加
minOccurs="0"(可选)、maxOccurs="unbounded"(可重复多次)
例如允许多个 的图书列表:
复用类型与数据约束
避免重复写结构,把公共类型抽成 xs:complexType 或 xs:simpleType 并命名,再通过 type 引用:
- 定义可重用类型:
... - 引用它:
- 对字符串加格式限制(如 ISBN):
常见约束还包括:minInclusive、maxLength、enumeration(枚举值)等,都在 xs:restriction 内使用。










