XML Schema attribute 元素
定义和用法
attribute 元素定义一个属性。
元素信息
出现次数 | 在 schema 元素中定义一次。 在复杂类型或属性组中引用多次。 |
父元素 | attributeGroup、schema、complexType、restriction (simpleContent)、extension (simpleContent)、restriction (complexContent)、extension (complexContent) |
内容 | annotation、simpleType |
语法
<attribute
default=string
fixed=string
form=qualified|unqualified
id=ID
name=NCName
ref=QName
type=QName
use=optional|prohibited|required
any attributes
>
(annotation?,(simpleType?))
</attribute>
(? 符号声明该元素可在 attribute 元素中出现零次或一次。)
属性
default
可选。规定属性的默认值。default 和 fixed 属性不能同时出现。
fixed
可选。规定属性的固定值。default 和 fixed 属性不能同时出现。
form
可选。规定属性的格式。默认值是包含该属性的 schema 元素的 attributeFormDefault 属性的值。可以设置为下列值:
- "qualified" - 指示必须通过命名空间前缀和该属性的无冒号名称 (NCName) 来限定此属性。
- "unqualified" - 指示此属性无须由命名空间前缀限定,且无须匹配此属性的无冒号名称 (NCName),即本地名称。
id
可选。规定该元素的唯一的 ID。
name
可选。规定属性的名称。name 和 ref 属性不能同时出现。
ref
可选。规定对指定的属性的引用。name 和 ref 属性不能同时出现。如果 ref 出现,则 simpleType 元素、form 和 type 不能出现。
type
可选。规定内置的数据类型或简单类型。type 属性只能在内容不包含 simpleType 元素时出现。
use
可选。规定如何使用该属性。可设置下面的值:
- optional - 属性是可选的并且可以具有任何值(默认)。
- prohibited - 不能使用属性。
- required - 属性的必需的。
any attributes
可选。规定带有 non-schema 命名空间的任何其他属性。
实例
例子 1
<xs:attribute name="code">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z][A-Z]"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
上面的例子指示 "code" 属性有一个限定。唯一可接受的值是大写字母 A 到 Z 中的两个字母。
例子 2
如需使用在复杂类型中一个已有的属性定义来声明一个属性,请使用 ref 属性:
<xs:attribute name="code">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z][A-Z]"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:complexType name="someComplexType">
<xs:attribute ref="code"/>
</xs:complexType>
例子 3
属性既可以拥有默认值,也可以拥有指定的固定值。在没有其他的值被指定时,会自动向属性赋予默认值。在下面的例子中,默认值是 "EN":
<xs:attribute name="lang" type="xs:string" default="EN"/>
在没有其他的值被指定时,会自动向属性赋予固定值。但是与默认值不同,如果您为属性规定了固定值以外的其他值,文档会验证为无效。在下面的例子中,固定值是 "EN":
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
例子 4
所有属性默认都是可选的。如需明确地规定属性为可选,请使用 "use" 属性:
<xs:attribute name="lang" type="xs:string" use="optional"/>
使属性成为必需的属性:
<xs:attribute name="lang" type="xs:string" use="required"/>