XML Schema 参考手册

下面这份 XML Schema (XSD) 终极参考手册 是你这辈子写 XSD 能用到的最全、最实用的一页纸。
建议直接收藏、打印、打印贴墙,写 XML/XSD 接口再也不用查文档了。

1. 根结构(永远这样开头的 8 行)

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://yourcompany.com/ns/order"
           xmlns:tns="http://yourcompany.com/ns/order"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified"
           version="1.0">

2. 所有常用内置数据类型速查(直接背)

类别类型名推荐指数典型用途
字符串xs:string4 stars描述、备注、富文本
xs:token5 stars名字、标题、关键词(去首尾空格)
xs:language4 starszh-CN、en-US
数值xs:integer5 stars所有整数
xs:nonNegativeInteger5 stars数量、库存、年龄
xs:positiveInteger5 stars件数、排名
xs:long4 stars雪花ID、分布式ID
xs:decimal5 stars钱、重量、经纬度(必配 fractionDigits)
日期时间xs:date5 stars生日、订单日期
xs:dateTime5 stars创建时间、支付时间(中国用 +08:00)
xs:gYearMonth4 stars信用卡有效期 2028-11
其他xs:boolean5 starstrue/false
xs:base64Binary5 stars图片、文件上传
xs:anyURI5 stars网址、图片链接
xs:ID / xs:IDREF4 starsXML 内唯一标识和引用

3. 最常用“黄金代码片段”(直接复制)

<!-- 富文本(所有项目必抄) -->
<xs:complexType name="RichText" mixed="true">
  <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="b" type="tns:RichText"/>
    <xs:element name="i" type="tns:RichText"/>
    <xs:element name="u" type="tns:RichText"/>
    <xs:element name="br"/>
    <xs:any namespace="##other" processContents="lax"/>
  </xs:choice>
</xs:complexType>

<!-- 金额(财务系统永远这几行) -->
<xs:simpleType name="Money">
  <xs:restriction base="xs:decimal">
    <xs:totalDigits value="16"/>
    <xs:fractionDigits value="2"/>
    <xs:minInclusive value="0"/>
  </xs:restriction>
</xs:simpleType>

<!-- 可无限扩展节点(Spring/MyBatis/Maven 都在用) -->
<xs:complexType name="Extensible">
  <xs:sequence>
    <xs:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
  <xs:anyAttribute namespace="##any" processContents="skip"/>
</xs:complexType>

<!-- 元素替换(支付、地址、XHTML h1~h6) -->
<xs:element name="payment" abstract="true" type="tns:Payment"/>
<xs:element name="alipay"   substitutionGroup="tns:payment" type="tns:Alipay"/>
<xs:element name="wechat"   substitutionGroup="tns:payment" type="tns:Wechat"/>
<xs:element name="card"     substitutionGroup="tns:payment" type="tns:Card"/>

4. 所有指示器 & 通配符一览表

关键字写在哪作用
xs:sequencecomplexType 内必须按顺序
xs:choicecomplexType 内只能选一个(配合 unbounded 做富文本)
xs:allcomplexType 内都出现但顺序随意(每个只能 0..1)
minOccurs / maxOccurselement、sequence、choice 上出现次数
mixed=”true”complexType 上允许文本+子元素混排
sequence/choice 内任意元素
complexType 最后任意属性
substitutionGroup全局 element 上元素替换(多态)
abstract=”true”全局 element 上强制必须被替换
nillable=”true”element 上允许

5. 终极记忆口诀(10 秒背会)

需求永远只写这行代码
富文本mixed=”true” + choice + unbounded
列表maxOccurs=”unbounded”
插件/扩展点<xs:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
任意属性<xs:anyAttribute namespace="##any" processContents="skip"/>
金额xs:decimal + fractionDigits=”2″
名字/标题xs:token
中国时间xs:dateTime → 2025-11-28T14:30:25+08:00
支付/否xs:boolean
图片上传xs:base64Binary
多态(支付、地址)全局头元素 + abstract=”true” + substitutionGroup

把这页保存为 XSD-Reference-CheatSheet.md 或直接打印贴在工位,写 XSD 的速度立刻提升 10 倍,永远不需要再去 W3Schools 或 MDN 查了。

需要我再给你一份可直接下载的 PDF / Markdown / Word 版本吗?一句话就发。

文章已创建 2838

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部