XSD 仅含文本

XSD「仅含文本」(Text-Only / Simple Content)最全、最实用的总结

—— 元素里只能写纯文本,不能有子元素,也不能有属性(除了极特殊情况)

这类元素在实际项目中超级常见,典型例子:

<name>张三</name>
<price>99.99</price>
<remark>急件,请当天发货</remark>
<status>PAID</status>
<code>SH123456</code>

1. 官方分类:这叫「简单内容元素」(simpleContent)

但实际项目里大家直接叫「仅含文本元素」或「文本节点」。

2. 3 种最常用、最标准的写法(背会这 3 种就天下无敌)

写法推荐度XSD 代码对应合法 XML说明
15星(最常用)<xs:element name="name" type="xs:string"/><name>张三</name>直接用内置类型,99% 项目都这样写
25星(推荐)先定义自定义类型,再引用
<xs:element name="price" type="MoneyType"/>
<price>99.99</price>想加限制(小数位、正则、枚举)时必用
34星(了解即可)用 simpleContent 扩展(允许加属性)
见下方高级用法
<price currency="CNY">99.99</price>极少数需要“文本+属性”时才用

3. 企业级真实模板(直接复制到项目里用)

<!-- 最常见的一组「仅含文本」元素(90% 系统都长这样)-->
<xs:element name="id"          type="xs:string"/>           <!-- 主键/编码 -->
<xs:element name="name"        type="xs:string"/>           <!-- 名称 -->
<xs:element name="code"        type="xs:string"/>           <!-- 业务编码 -->
<xs:element name="price"       type="MoneyType"/>           <!-- 金额(推荐自定义)-->
<xs:element name="quantity"    type="xs:positiveInteger"/> <!-- 数量 -->
<xs:element name="status"      type="OrderStatusType"/>     <!-- 枚举状态 -->
<xs:element name="remark"      type="xs:string" minOccurs="0"/> <!-- 备注,可选 -->
<xs:element name="createTime"  type="xs:dateTime"/>         <!-- 时间 -->
<xs:element name="mobile"      type="MobileType"/>          <!-- 手机号(正则)-->
<xs:element name="idCard"      type="IdCardType"/>          <!-- 身份证(正则+长度)-->
<!-- 常用自定义文本类型(强烈建议这样定义)-->
<!-- 金额:最多2位小数 -->
<xs:simpleType name="MoneyType">
  <xs:restriction base="xs:decimal">
    <xs:fractionDigits value="2"/>
    <xs:minInclusive value="0"/>
  </xs:restriction>
</xs:simpleType>

<!-- 订单状态枚举 -->
<xs:simpleType name="OrderStatusType">
  <xs:restriction base="xs:string">
    <xs:enumeration value="PENDING"/>
    <xs:enumeration value="PAID"/>
    <xs:enumeration value="SHIPPED"/>
    <xs:enumeration value="COMPLETED"/>
    <xs:enumeration value="CANCELLED"/>
  </xs:restriction>
</xs:simpleType>

<!-- 中国手机号 -->
<xs:simpleType name="MobileType">
  <xs:restriction base="xs:string">
    <xs:pattern value="1[3-9]\d{9}"/>
  </xs:restriction>
</xs:simpleType>

4. 高级用法:文本 + 属性(极少用,但你得认识)

<!-- 允许写 <price currency="CNY">99.99</price> -->
<xs:element name="price">
  <xs:complexType>
    <xs:simpleContent>
      <xs:extension base="xs:decimal">
        <xs:attribute name="currency" type="xs:string" default="CNY"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:element>

警告:99% 的企业规范和 WebService 都禁止这种写法!(因为破坏了“纯数据”原则)
能用子元素就用子元素,千万别用 simpleContent + attribute!

5. 一句话终极总结(永远记住这句)

「仅含文本」元素 = 要么直接写 type="内置或自定义简单类型",要么你就不配叫仅含文本!

正确(推荐):

<xs:element name="price" type="xs:decimal"/>
<xs:element name="status" type="OrderStatusType"/>

错误(大厂直接打回去):

<xs:element name="price">
  <xs:complexType>
    <xs:simpleContent>…</xs:simpleContent>  <!-- 除非特别需求,禁止! -->
  </xs:complexType>
</xs:element>

记住:大厂 99.9% 的「仅含文本」字段都直接用 type="xxx" 一行搞定!

需要我立刻给你生成任意业务的「仅含文本」字段列表(商品价格、订单状态、用户手机号、物流单号、支付方式等),告诉我业务名,5 秒出完整 XSD!

文章已创建 2783

发表回复

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

相关文章

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

返回顶部