XML Schema是定义XML文档结构、内容和约束的标准规范,xs:attribute是其中用于声明XML元素属性的核心元素,fixed属性则是xs:attribute的内置属性,用于指定该XML属性只能取固定的预设值,不允许XML实例文档中修改该属性的取值。

xs:attribute fixed属性的基本语法
fixed属性的取值是一个字符串,代表该XML属性被固定的值,当在xs:attribute上声明fixed属性后,对应的XML属性在实例文档中要么不出现,要么取值必须和fixed指定的值完全一致,否则XML文档校验会失败。
基本语法结构如下:
<xs:attribute name="属性名" type="属性类型" fixed="固定值" />
其中name指定XML属性的名称,type指定属性的数据类型,fixed指定该属性被固定的取值,三者都是xs:attribute的常用属性,fixed和type可以按需组合使用。
fixed属性的使用示例
下面通过一个完整的XSD示例,展示如何定义带有固定值属性的元素:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.ipipp.com/schema"
xmlns="http://www.ipipp.com/schema"
elementFormDefault="qualified">
<!-- 定义一个用户元素,包含固定值的角色属性 -->
<xs:element name="user">
<xs:complexType>
<xs:attribute name="role" type="xs:string" fixed="normal" />
<xs:attribute name="id" type="xs:integer" />
</xs:complexType>
</xs:element>
</xs:schema>
对应的符合约束的XML实例文档如下,role属性要么不写,要么取值必须是normal:
<?xml version="1.0" encoding="UTF-8"?>
<user xmlns="http://www.ipipp.com/schema"
id="1001"
role="normal">
</user>
如果XML实例中role属性取值为admin,校验时会直接报错,因为不符合fixed指定的固定值要求。
fixed和default属性的区别
很多开发者会混淆fixed和default两个属性,二者的核心差异如下:
| 对比项 | fixed属性 | default属性 |
|---|---|---|
| 取值约束 | 属性取值必须等于固定值,不可修改 | 属性未指定时取默认值,可手动修改为其他合法值 |
| 实例文档表现 | 属性可省略,若写则必须和固定值一致 | 属性可省略,省略时自动填充默认值,也可手动指定其他值 |
| 使用场景 | 需要强制属性取值固定不变的场景 | 属性有常用默认值,允许按需修改的场景 |
使用fixed属性的注意事项
- fixed属性的取值需要和type指定的数据类型匹配,比如type是xs:integer,fixed的值必须是合法的整数,否则XSD本身会校验失败。
- 如果同时声明了fixed和default属性,XSD解析会报错,二者不可同时使用。
- fixed属性约束的是XML实例文档的属性取值,不会限制XSD中其他元素或属性的定义,仅在实例校验时生效。
当需要在XSD中强制某个属性只能取固定值时,使用xs:attribute的fixed属性是最直接有效的方式,只要遵循语法规则,就能准确实现属性取值的强约束需求。
XML_Schemaxs:attributefixed属性XSD属性固定值修改时间:2026-07-03 01:36:19