XML Schema annotation 元素
定义和用法
annotation 元素是一个顶层元素,规定 schema 的注释。
注释:可以包含 appinfo 元素(由应用程序使用的信息)和 documentation 元素(由用户读取或使用的注释或文本)。
元素信息
项目 | 说明 |
出现次数 | 在父元素中一次。 |
父元素 | 任何元素 |
内容 | appinfo、documentation |
语法
<annotation
id=ID
any attributes
>
(appinfo|documentation)*
</annotation>
(* 符号声明该元素可在 annotation 元素中出现零次或多次。)
属性 | 描述 |
id | 可选。该元素的唯一标识符。 |
any attributes | 可选。规定带有 non-schema 命名空间的任何其他属性。 |
例子 1
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:appInfo>W3School Note</xs:appInfo>
<xs:documentation xml:lang="en">
This Schema defines a W3School note!
</xs:documentation>
</xs:annotation>
.
.
.
</xs:schema>
XML Schema any 元素
定义和用法
any 元素使来自指定命名空间的任何元素可以显示在包含 sequence 或 choice 元素中。
该元素使创作者可以通过未被 schema 规定的元素来扩展 XML 文档。
元素信息
项目 | 说明 |
出现次数 | 无限制 |
父元素 | choice、sequence |
内容 | annotation |
语法
<any
id=ID
maxOccurs=nonNegativeInteger|unbounded
minOccurs=nonNegativeInteger
namespace=namespace
processContents=lax|skip|strict
any attributes
>
(annotation?)
</any>
(? 符号声明元素可在任何元素内出现零次或一次。)
属性
id
可选。规定该元素的唯一的 ID。
maxOccurs
可选。规定 any 元素在父元素中可出现的最大次数。该值可以是大于或等于零的整数。若不想对最大次数设置任何限制,请使用字符串 "unbounded"。 默认值为 1。
minOccurs
可选。规定 any 元素在父元素中可出现的最小次数。该值可以是大于或等于零的整数。若要指定该 any 组是可选的,请将此属性设置为零。 默认值为 1。
namespace
可选。规定包含可以使用的元素的命名空间。如果没有指定命名空间,则 ##any 为默认值。 如果指定命名空间,则必须是以下值之一:
· ##any - 来自任何命名空间的元素都可以出现(默认)。
· ##other - 来自该元素的父元素的目标命名空间之外的任何命名空间的元素都可以出现。
· ##local - 未由命名空间限定的元素可以出现。
· ##targetNamespace - 来自包含该元素的父元素的目标命名空间的元素可以出现。
· {URI references of namespaces, ##targetNamespace, ##local} 的列表 - 来自通过空格分隔的命名空间列表的元素可以出现。 该列表可以包含以下内容: 命名空间 ##targetNamespace 和 ##local 的 URI 引用。
processContents
可选。一个指示符,指示应用程序或 XML 处理器应如何根据由该 any 元素指定的元素处理 XML 文档的验证。 如果没有指定 processContents 属性,则默认为 strict。 如果指定了 processContents,必须是以下值之一:
· strict - XML 处理器必须获得所需命名空间的架构,并且必须验证来自这些命名空间的所有元素。(默认)
· lax - 与 strict 相同;但是,即使不能获取该架构,也不会发生任何错误。
· skip - XML 处理器不尝试验证来自指定命名空间的所有元素。
any attributes
可选。规定带有 non-schema 命名空间的任何其他属性。
例子
下面的例子展示了 "person" 元素的一个声明。通过使用 <any> 元素,创作者可以用任何元素扩展 "person" 的内容(在 <lastname> 之后):
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:any minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
XML Schema anyAttribute 元素
定义和用法
anyAttribute 元素使创作者可以通过未被 schema 规定的属性来扩展 XML 文档。
元素信息
项目 | 说明 |
出现次数 | 无限制 |
父元素 | complexType、restriction (simpleContent)、extension (simpleContent)、restriction (complexContent)、extension (complexContent)、attributeGroup |
内容 | annotation |
语法
<anyAttribute
id=ID
namespace=namespace
processContents=lax|skip|strict
any attributes
>
(annotation?)
</anyAttribute>
(? 符号声明该元素可在 anyAttribute 元素内出现零次或一次。)
属性
id
可选。规定该元素的唯一的 ID。
namespace
可选。规定包含可以使用的元素的命名空间。如果没有指定命名空间,则 ##any 为默认值。如果指定命名空间,则必须是以下值之一。
· ##any - 来自任何命名空间的元素都可以出现(默认)。
· ##other - 来自该元素的父元素的目标命名空间之外的任何命名空间的元素都可以出现。
· ##local - 未由命名空间限定的元素可以出现。
· ##targetNamespace - 来自包含该元素的父元素的目标命名空间的元素可以出现。
· {URI references of namespaces, ##targetNamespace, ##local} 的列表 - 来自通过空格分隔的命名空间列表的元素可以出现。 该列表可以包含以下内容: 命名空间 ##targetNamespace 和 ##local 的 URI 引用。
processContents
可选。一个指示符,指示应用程序或 XML 处理器应如何根据由该 any 元素指定的元素处理 XML 文档的验证。 如果没有指定 processContents 属性,则默认为 strict。 如果指定了 processContents,必须是以下值之一。
· strict - XML 处理器必须获得所需命名空间的架构,并且必须验证来自这些命名空间的所有元素。(默认)
· lax - 与 strict 相同;但是,即使不能获取该架构,也不会发生任何错误。
· skip - XML 处理器不尝试验证来自指定命名空间的所有元素。
any attributes
可选。规定带有 non-schema 命名空间的任何其他属性。
实例
下面的例子展示了针对 "person" 元素的一个声明。通过使用 <anyAttribute> 元素,创作者能够向 "person" 元素添加任意数量的属性:
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
<xs:anyAttribute/>
</xs:complexType>
</xs:element>
XML Schema appInfo 元素
定义和用法
appInfo 元素规定 annotation 元素中应用程序要使用的信息。该元素必须位于 annotation 中。
注释:应用程序使用在 appinfo 元素内提供的信息处理指令。
元素信息
出现次数 | 无限制。 |
父元素 | annotation |
内容 | 任何格式正确的 XML 内容。 |
语法
<appInfo
source=anyURL
>
Any well-formed XML content
</appInfo>
属性 | 描述 |
source | 可选。一个 URI 引用,规定应用程序信息的来源。 |
例子 1
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:appInfo>W3School Note</xs:appInfo>
<xs:documentation xml:lang="en">
This Schema defines a W3School note!
</xs:documentation>
</xs:annotation>
.
.
.
</xs:schema>
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"/>