XSD 里那些不属于「字符串」「数值」「日期」三大类的类型,通常被称为「杂项类型」,但在真实项目里很多超级好用、甚至是必备的。下面直接给你一份最精华、最实用的 XSD 杂项类型速查表 + 推荐写法,看完这张表你就彻底无敌了。

类型名称 含义 & 典型用途 推荐指数 经典实例写法 真实项目场景举例
xs:boolean 真/假 5 stars true / false / 1 / 0 开关、是否启用、是否删除
xs:base64Binary Base64 编码的二进制文件 5 stars “SGVsbG8=” 图片、文件上传、证书
xs:hexBinary 十六进制二进制 2 stars “48656C6C6F” 极少用(MD5/SHA1 可考虑)
xs:anyURI URL、路径、URN 5 stars “https://example.com/a.jpg”、“…/img/” 图片地址、跳转链接、静态资源
xs:QName 带命名空间的前缀名称 3 stars “po:purchaseOrder” WebService、动态类型反射(一般不用)
xs:NOTATION 几乎没人用 0 stars 忽略
xs:normalizedString 替换换行/制表符为空格(不建议) 1 star 永远用 xs:token 代替
xs:token 去首尾空格 + 压缩连续空格(字符串之王) 5 stars " 张三 \n 李四 " → “张三 李四” 所有名字、标题、关键词、搜索词
xs:language RFC 语言代码 4 stars “zh-CN”、“en-US”、“fr” 多语言切换、i18n
xs:ID 文档内唯一标识 5 stars “user_123” XML 内联 ID(类似 HTML id)
xs:IDREF / xs:IDREFS 引用 ID(多个用空格分隔) 4 stars “user_123” / “user1 user2” 实现父子关系、关联引用
xs:NMTOKEN 不能有空格的 token(类似枚举值) 3 stars “active”、“pending” 状态码、类型标识
xs:NMTOKENS 多个 NMTOKEN 3 stars “read write delete” 权限列表
xs:byte -128 ~ 127 1 star 极少用 用 xs:int 代替
xs:unsignedInt 0 ~ 42 亿 3 stars 4294967295 点击量、播放量(够用就行)
xs:unsignedLong 0 ~ 1.8×10¹⁹ 4 stars 18446744073709551615 超大计数器、雪花ID低64位

真实项目永远只用这 8 个杂项类型就打遍天下

业务场景 永远写这个类型 推荐额外限制(直接复制)
是否启用、是否删除 xs:boolean 默认 default=“false”
图片/附件上传 xs:base64Binary + maxLength 限制大小(5MB ≈ 7000000 字符)
商品图、头像、跳转链接 xs:anyURI + pattern 强制 https 或相对路径
所有名字、标题、关键词 xs:token + maxLength=“100”
语言切换 xs:language
XML 内唯一 ID xs:ID
关联父级/关联用户 xs:IDREF
权限列表、标签 xs:NMTOKENS 或 xs:token + pattern “read write delete”

实战最常用写法(直接复制进项目)

<!-- 1. 是否启用(最标准) -->
<xs:element name="enabled" type="xs:boolean" default="true"/>

<!-- 2. 图片 base64(限制 5MB) -->
<xs:element name="photo">
  <xs:simpleType>
    <xs:restriction base="xs:base64Binary">
      <xs:maxLength value="7000000"/>   <!-- ≈5MB -->
    </xs:restriction>
  </xs:simpleType>
</xs:element>

<!-- 3. 外链图片地址(强制 https) -->
<xs:simpleType name="HttpsUrl">
  <xs:restriction base="xs:anyURI">
    <xs:pattern value="https://.*"/>
  </xs:restriction>
</xs:simpleType>

<!-- 4. 所有标题、用户名、搜索词(永远用 token) -->
<xs:simpleType name="Title">
  <xs:restriction base="xs:token">
    <xs:minLength value="1"/>
    <xs:maxLength value="200"/>
  </xs:restriction>
</xs:simpleType>

<!-- 5. 多语言代码 -->
<xs:element name="lang" type="xs:language" default="zh-CN"/>

<!-- 6. 权限列表 -->
<xs:element name="permissions" type="xs:NMTOKENS"/>
<!-- 示例:<permissions>read write delete</permissions> -->

终极记忆口诀(贴在显示器上)

你想表达什么 永远只写这个类型
是/否、开关 xs:boolean
图片、文件上传 xs:base64Binary
网址、图片链接 xs:anyURI
名字、标题、关键词 xs:token
语言 zh-CN / en-US xs:language
XML 内唯一 ID xs:ID
引用另一个元素的 ID xs:IDREF / xs:IDREFS
其他全部忽略

记住:杂项类型里只有 boolean、base64Binary、anyURI、token、language、ID/IDREF 是你这辈子会真正用到的,其余全部可以当不存在!

需要我再甩你一套「用户管理」「商品上传」「权限系统」三套完整的杂项字段 XSD 模板吗?秒发!

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐