复杂类型允许其内容中包括元素并且可带有属性。复杂类型可用来帮助确定从 XML 模式生成的或与 XML 模式相关联的任何实例文档的内容。
可以将任何数目的复杂类型添加至 XML 模式。
下列指示信息是为“资源”透视图编写的,但是也适用于其它许多透视图。
要将复杂类型添加至 XML 模式,遵循下列步骤:
- 在 XML 模式编辑器中打开 XML 模式。
- 在“大纲”视图中,选择模式。
- 在“图”视图中,右键单击类型部分并单击添加复杂类型。
- 在“属性”视图中,在名称字段中输入复杂类型的新名称。
- 单击更多
按钮以选择复杂类型的基本类型。 可以对复杂类型设置基本类型,也可以将内容模型(它表示可包含在元素中的任何数据)添加到复杂类型,但不能同时执行两个操作。有关内容模型的更多信息,参阅相关任务。
- 从派生自列表中选择限制或扩展。 这将指定类型是通过限制还是通过扩展从它的基本类型派生的。
- 单击其它选项卡。 可以此页中指定下列可选值:
- 在抽象列表中选择适当的值。 当将复杂类型声明为抽象时,不能在实例文档中使用它。如果想要使复杂类型是抽象的,则单击 true;否则单击 false。
- 在阻止列表中选择适当的值。 如果选择 #all,则复杂类型不能被任何派生内容替换。如果选择扩展,则复杂类型不能被通过扩展它而从它派生出来的任何类型替换。如果选择限制,则复杂类型不能被通过限制它而从它派生出来任何类型替换。
- 在终态列表中选择适当的值。 如果选择 #all,则根本不能从复杂类型派生任何内容。如果选择扩展,则可能不能通过扩展从复杂类型进行派生。如果选择限制,则可能不能通过限制从复杂类型进行派生。
- 在混合列表中选择适当的值。 如果单击 true,则复杂类型可包含混合内容(字符数据和其它元素)。如果单击 false,则复杂类型只能包含其它元素。
- 单击属性选项卡。 可以使用此页来将属性、属性引用、属性组引用和 any 属性添加至复杂类型。
- 属性使属性名称与特定类型和值相关联。要添加属性,在“属性”页中右键单击,然后单击添加属性。 可为属性指定下列值:
- 固定/缺省。单击更多按钮并选择固定或缺省单选按钮并指定适当的值。如果选择固定,则属性具有固定的值,该值是不能更改的。如果选择缺省,则属性具有缺省值。当属性具有缺省值时,属性的值就是实例文档中出现为属性的值的任何值。
- 表单。使用此字段来指示是否必须用名称空间来限定 XML 模式的实例中此属性的外观。
- 名称。输入属性的名称。
- 类型。单击更多按钮并选择属性的类型。
- 使用。此字段指示在实例文档中如何使用属性。如果选择可选,则属性可出现一次,但不一定非要出现。如果选择必需,则属性一定要出现一次。如果选择禁止,则属性一定不能出现。注意:如果选择了缺省单选按钮,则必须在此字段中选择可选,否则缺省值将无效。
- 属性引用提供了对全局属性的引用。要添加属性引用,在“属性”页中右键单击,然后单击添加属性引用。 引用全局属性的声明使被引用的属性能够出现在引用声明的上下文中的实例文档中。仅当在文档中别的地方定义了全局属性时,用于添加全局属性的菜单选项才会出现。
- 选择引用,然后从引用列表中选择想要它引用的全局属性。
- 属性组引用提供了对属性组的引用。要添加属性组引用,在“属性”页中右键单击,然后单击添加属性组引用。 引用属性组的声明使被引用的属性组能够出现在引用声明的上下文中的实例文档中。仅当在文档中的其它地方定义了属性组时,才会出现用于添加属性组引用的菜单选项。
- 选择引用,然后从引用列表中选择想要它引用的属性组。
- any 元素根据名称空间启用元素内容,而对应的
any 属性元素使属性能够出现在元素中。要添加 any 属性,在“属性”页中右键单击,然后单击添加 Any 属性。 可为 any 属性指定下面的值:
- 对于 namespace 值,可以选择 ##any(这允许任何名称空间中的任何格式良好的 XML)、##local(这允许未声明为要在名称空间中的任何格式良好的 XML)、##other(这允许不是要定义的目标名称空间类型中的任何格式良好的 XML)或 ##targetNamespace(它是要定义的目标空间类型的缩写)。
- 对于 processContents 值,可以选择 skip(XML
处理器根本不会验证属性内容)、lax(XML 处理器将尽量验证属性内容)或
strict(XML 处理器将验证所有属性内容)。
- 如果想要提供有关此复杂类型的任何信息,则单击文档选项卡。 文档中是读者可阅读的资料(例如描述),而应用程序信息页可用来提供有关应用程序的信息。