XSD 字符串 数据类型

XSD(XML Schema)中所有和“字符串”相关的内置数据类型,一次性讲全、讲透,带常用限制技巧,直接拿来就能用!

类型名称含义 & 典型用途是否允许空格/换行经典例子备注
xs:string最万能的字符串,啥都能放(推荐 90% 场景)” 张三 \n\t “保留所有空白字符
xs:normalizedString自动把换行、连续空格、制表符替换成单个空格部分“张三” → “张三”(换行被空格替换)常用于不需要格式的文本
xs:token进一步去掉首尾空格 + 连续空格压缩成一个” 张三 \n 李四 ” → “张三 李四”
xs:language语言代码“zh-CN”、”en-US”、”fr”符合 RFC 4646
xs:NameXML 合法名称(不能以数字开头,不能有空格等)“userName”、”order_id”可用于元素/属性名
xs:NCName无冒号的 Name(不能有命名空间前缀)“userName”、”orderId”常用于 ID、变量名
xs:IDXML 文档内唯一 ID“user123”必须唯一,类似 HTML 的 id
xs:IDREF / xs:IDREFS引用某个 ID(多个用空格分隔)“user123” / “user1 user2”实现关联关系
xs:NMTOKEN类似 token,但更宽松(不能有空格)“user_name”、”v2.1”常用于枚举值
xs:NMTOKENS多个 NMTOKEN(空格分隔)“read write delete”
xs:base64BinaryBase64 编码的二进制“SGVsbG8gd29ybGQ=”文件上传常用
xs:hexBinary十六进制二进制“48656C6C6F”少用
xs:anyURIURL 或 URI“https://example.com/img.jpg”自动允许相对路径

99% 业务场景推荐写法(直接背下来)

业务字段推荐类型推荐额外限制(facet)理由
用户名 / 姓名xs:tokenlength/minLength/maxLength + pattern去掉多余空格,方便比较
手机号xs:string 或 token中国大陆手机号
邮箱xs:string正则验证
标题 / 商品名xs:tokenmaxLength=”100″去掉首尾空格,限制长度
密码(明文存储,慎用)xs:stringminLength=”6″不要用 pattern 防止泄露规则
身份证号xs:string<xs:pattern value=”\d{17}[\dX]\d{15}”/>
订单号 / 流水号xs:string大写+数字
描述 / 备注xs:stringmaxLength=”2000″保留换行和格式,用 string
富文本内容xs:string(通常放 CDATA 或转义)或者自定义 mixed 内容
状态枚举xs:string + enumeration最清晰
文件上传 base64xs:base64BinarymaxLength(计算字节)防止超大文件

实战写法大全(直接复制)

<!-- 1. 用户名(最常用写法) -->
<xs:element name="username" type="xs:token"/>
<xs:simpleType name="UsernameType">
  <xs:restriction base="xs:token">
    <xs:minLength value="4"/>
    <xs:maxLength value="20"/>
    <xs:pattern value="[a-zA-Z][a-zA-Z0-9_]{3,}"/>  <!-- 字母开头 -->
  </xs:restriction>
</xs:simpleType>

<!-- 2. 中国手机号(最严谨) -->
<xs:simpleType name="MobileType">
  <xs:restriction base="xs:string">
    <xs:pattern value="1[3-9]\d{9}"/>
    <xs:length value="11"/>
  </xs:restriction>
</xs:simpleType>

<!-- 3. 通用标题 -->
<xs:simpleType name="TitleType">
  <xs:restriction base="xs:token">
    <xs:maxLength value="100"/>
    <xs:minLength value="1"/>
    <xs:whiteSpace value="collapse"/>
  </xs:restriction>
</xs:simpleType>

<!-- 4. 订单状态枚举(推荐!) -->
<xs:simpleType name="OrderStatus">
  <xs:restriction base="xs:string">
    <xs:enumeration value="pending"/>
    <xs:enumeration value="paid"/>
    <xs:enumeration value="shipped"/>
    <xs:enumeration value="completed"/>
    <xs:enumeration value="canceled"/>
  </xs:restriction>
</xs:simpleType>

<!-- 5. 图片 base64 图片(限制 5MB) -->
<xs:element name="photo">
  <xs:simpleType>
    <xs:restriction base="xs:base64Binary">
      <xs:maxLength value="5242880"/> <!-- 5MB × 4/3 ≈ 6.8M chars -->
    </xs:restriction>
  </xs:simpleType>
</xs:element>

一句话总结(永远不会错)

你想表达的意思直接写这个类型
普通文本、描述、富文本xs:string
名字、标题、关键词xs:token
需要严格校验格式xs:string + pattern
枚举值xs:string + enumeration
文件上传xs:base64Binary
URL 地址xs:anyURI
XML 中的 idxs:ID

记住了:90% 的字符串字段都用 xs:token 就完事了!

要我直接给你一个「用户注册」「商品信息」「订单详情」这三套最标准的字符串字段 XSD 模板吗?秒发!

文章已创建 2838

发表回复

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

相关文章

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

返回顶部