内容模型对象
在内容模型视图中,图表中显示的对象分为三大组:
•排序符:(i) sequence, (ii) choice, (iii) all
•组件: (i) 元素,(ii) 复杂类型,(iii) 模型组,(iv) 通配符
•其他:(i) 特性,(ii) 特性组,(iii) 断言,(iv) 约束,(v) 开放内容
下面分别介绍这些对象的图形表示。
排序符
排序符定义了子元素出现的顺序。有三种排序符:sequence、choice和all。
要插入一个排序符,请执行以下操作:
1.右键单击要添加子元素的元素。
2.选择添加子级 | Sequence(或Choice 或All)。
这将添加一个排序符,如下所示:
•Sequence

•Choice

•全部

要更改排序符,请在排序符上右键单击并选择更改模型 | Sequence(或Choice或All)。添加排序符后,您需要添加子元素或模型组。
组件
下方给出了内容模型中使用的组件列表。每个组件的图形表示提供了有关组件类型及其结构属性的详细信息。
•必需单个元素

详细信息:矩形表示一个元素,实线边框表示该元素是必需的。没有数字范围表示它是单个元素(即minOcc=1和maxOcc=1)。元素的名称是Country。蓝色表示该元素当前被选中(单击组件可选中它)。未被选中时,组件是白色的。
•单个可选元素

详细信息:矩形表示它是一个元素,虚线边框表示该元素是可选的。没有数字范围表示它是单个元素(即minOcc=0 and maxOcc=1)。元素名称是Location。
提示:使用上下文菜单选项可选 可将必需元素转换为可选元素。
•必需多元素

详细信息:矩形表示一个元素,实线边框表示该元素是必需的。数字范围1..5表示minOcc=1且maxOcc=5。元素名称是Alias。
•包含子元素的必需多元素

详细信息:矩形表示一个元素,实线边框表示该元素是必需的。数字范围1..无限表示minOcc=1且maxOcc=unbounded。+号表示它包含复杂内容(即至少一个元素或特性子级)。元素名称是Division。
提示:使用上下文菜单选项无限 可将maxOcc更改为unbounded。
单击元素的+号可展开树结构并显示子元素。

•引用全局元素的元素

详细信息:左下角的箭头表示该元素引用了一个全局元素。矩形表示一个元素,实线边框表示该元素是必需的。数字范围1..无限表示minOcc=1且maxOcc=unbounded。+号表示它包含复杂内容(即至少一个元素或特性子级)。元素名称是xs:field。
提示:可以从简单和复杂类型定义中引用全局元素,从而使您能够在Schema中的多个位置复用全局声明。您可以通过两种方式创建对全局元素的引用:(i) 为局部元素输入与全局元素相同的名称;以及(ii) 在局部元素上右键单击并从上下文菜单中选择引用。要查看全局元素的定义,请按住Ctrl键并双击该元素。或者,在该元素上右键单击并选择转至定义。如果引用了不存在的元素,则该元素名称将显示为红色,警告没有可引用的定义。
•复杂类型

详细信息:带加号的不规则六边形表示复杂类型。此处显示的复杂类型的名称是keybase。此符号(带加号的不规则六边形)表示它是一个全局复杂类型。全局复杂类型在Schema概览中声明,其内容模型通常在内容模型视图中定义。全局复杂类型可用作(i) 元素的数据类型,或(ii) 另一个复杂类型的基类型,这可以通过在“详细信息”输入助手(在内容模型视图或Schema概览中)中将其分配给元素或复杂类型来实现。

上方显示的keybase复杂类型在Schema概览中已声明,其基类型为xs:annotated。基类型显示为带有灰色虚线边框和黄色背景颜色的矩形。然后,在内容模型视图中创建了子元素xs:selector和xs:field。(请注意xs:selector和xs:field矩形左下角的小箭头。这表示这两个元素都引用了该名称的全局元素。)
局部复杂类型通过为元素创建子元素或特性直接在内容模型视图中进行定义。局部复杂类型没有单独的符号。
提示:内容模型的基类型显示为带有灰色虚线边框和黄色背景颜色的矩形。要查看基类型的内容模型,请双击其名称。
•模型组

详细信息:带加号的不规则八边形表示模型组。模型组允许您定义和复用元素声明。
提示:当(在Schema概览中)声明模型组时,它被赋予了一个名称。然后(在内容模型视图中)通过为其分配包含元素声明的子排序符来定义其内容模型。使用模型组时,它会作为子级插入,或者插入或追加到其他一些组件的内容模型中(在内容模型视图中)。
•通配符:

详细信息:左侧带any的不规则八边形表示通配符。
提示:通配符用作Schema中未指定的或来自其他命名空间的元素的占位符。##other =元素可以属于Schema中定义的目标命名空间以外的任何命名空间; ##any =元素可以属于任何命名空间;##targetNamespace =元素必须属于Schema中定义的目标命名空间;##local =元素不能属于任何命名空间;anyURI =元素属于您指定的命名空间。
其他对象
其他对象包括特性、特性组、断言、标识约束和开放内容。
•特性,特性组

详细信息:由可扩展矩形中的斜体字“attributes”表示。每个特性都显示在一个矩形中,并且(i) 如果特性是可选的,则用虚线边框表示;或(ii) 如果特性是必需的,则用实线边框表示。特性组和特性通配符也包含在“attributes”矩形中。
提示:可以在图表和“详细信息”输入助手中编辑特性。您可以在内容模型视图图表或内容模型视图下方的AAIDC窗格中查看特性。您可以通过单击“显示特性”图标来在两个视图之间切换。要更改元素特性的顺序,请拖动特性并在箭头出现在所需的位置时放下。
•断言

详细信息:由可扩展矩形中的斜体字“assertions”表示。每个断言都显示在断言框中的矩形中。
提示:可以在图表和“详细信息”输入助手中编辑断言。您可以在内容模型视图图表或内容模型视图下方的AAIDC窗格中查看它们。您可以通过单击“显示断言”图标来在两个视图之间切换。要更改元素断言的顺序,请拖动断言并在箭头出现在所需的位置时放下。
•标识约束

详细信息:由可扩展矩形中的斜体字“constraints”表示。
提示:组件的内容模型中列出的标识约束显示了使用key和keyref元素以及unique元素定义的约束。使用ID数据类型定义的标识约束没有显示在内容模型图表中,而是显示在“详细信息”输入助手中。标识约束可以在内容模型视图或Schema概览的“标识约束”选项卡中查看和编辑。在内容模型视图中,您可以使用“显示约束”图标打开或关闭约束框。
•条件类型分配

详细信息:alternative元素是一个矩形,其中包含要计算的XPath表达式(参见上方截图)。Alternative元素的类型在“详细信息”输入助手中定义。如果它是复杂类型,则会显示在alternative元素的扩展矩形中,并可以在那里进一步编辑(参见下方截图)。简单类型不会显示在图表中,但可以在“详细信息”输入助手的“简单类型”选项卡中定义。


提示:alternative元素是XSD 1.1中的新元素。如果XPath表达式的计算结果为true,则alternative元素指定的类型将是选定的类型。alternative元素中第一个计算结果为true的alternative元素将被选中。因此,替代元素的顺序起着重要的作用。您可以通过将alternative元素框拖动至所需顺序来更改排序。有关详细说明,请参见条件类型分配部分。
•默认开放内容,开放内容


详细信息:defaultOpenContent和openContent元素在内容模型视图中标记为openContent和defOpenContent。通配符元素内容由any框表示(参见上方截图)。
提示:defaultOpenContent和openContent元素是XSD 1.1中的新元素。默认开放内容是一个全局组件,在Schema概览中创建。在特定组件的内容模型视图中,您可以将默认开放内容替换为特定于该组件的开放内容,该开放内容将覆盖Schema的默认开放内容。只需将开放内容添加为组件的子级。“默认开放内容”框将替换为“开放内容”框。在内容模型视图中,您可以在图表和“详细信息”输入助手中编辑开放内容的mode特性以及其通配符元素的命名空间。您还可以在任何复杂类型的内容模型视图中从其表示中修改默认开放内容(针对整个Schema)。
提示:
•可以通过单击“添加预定义的详细信息”工具栏图标来打开或关闭您在“Schema显示配置”对话框中指定的预定义的详细信息。
•可以通过单击特性、断言和标识约束的图标来分别切换特性、断言和标识约束出现在内容模型本身的图表中,还是AAIDC窗格中(在内容模型视图下方)。
•在内容模型视图中,您可以通过按住Ctrl键并双击所需组件来跳转至当前内容模型中任何全局组件的内容模型视图。
•组件的上下文菜单包含以下命令以(i) 转至组件的定义,和(ii) 转至组件的类型定义(如果有)。