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"/>