智能限制
限制复杂类型时,基类型的部分内容模型将在派生类型中被重写。如果内容模型复杂,这可能会令人困惑,因为在编辑派生类型时,可能很难准确地记住基类型的内容模型是什么样的。
在智能限制的帮助下,两个内容模型在派生内容模型的图形视图中组合和关联。在派生的复杂类型中,您可以看到基复杂类型的所有粒子以及它们与派生类型的关系。此外,智能限制提供视觉提示并显示限制基类型的所有可能方式,从而更容易地正确限制派生类型。
要启用智能限制选项:
•请单击“Schema设计”工具栏中的“智能限制”图标。
以下示例显示了智能限制的工作原理。
以下复杂类型是本示例中使用的基类型:

复杂类型“derived”派生自“base”类型,如下所示:
1.在Schema中创建一个新的复杂类型并将其命名为“derived”。
2.在“详细信息”输入助手中,从base下拉列表中选择“base”,并从derivedBy下拉列表中选择“restriction”。

启用智能限制后,新的派生类型将如下所示:

请注意,以下是可用于限制本示例中的派生类型的控件:
•使用此图标可从派生类型中删除基类型中的元素。此处,elem1已被删除。要再次添加它,请单击此图标
。

•单击Choice排序符旁边的向下箭头以获取以下列表,您可以从中将Choice模型组更改为Sequence模型组:

如本例所示,也可以用相同的方式来更改通配符。 |

有关哪些粒子可以替换哪些其他粒子的详细列表,请参见XML Schema规范。 |
•使用以下控件可更改模型组的出现次数。单击“1”上方的加号可增加最小出现次数;单击“4”下方的减号可减少最大出现次数。当base中的出现次数范围描述的是实际范围(例如2-5),而不是特定值(例如4-4)时,这些控件会出现。当出现次数范围错误时,它们也会出现。

此处您可以看到该元素的最小出现次数已更改为2。请注意,模型组现在具有蓝色背景,这意味着它不再与基复杂类型中的模型组相同。此外,基粒子中模型组的允许出现次数范围现在显示在括号中。 |
•如果新数据类型是XML Schema规范中定义的基数据类型的有效限制,则可以对特性或元素的数据类型进行更改。例如,您可以在“derived”数据类型中将elem3的数据类型从decimal更改为integer。执行此操作后,该元素具有蓝色背景以显示它与基类型中的元素不同,并且该元素在基类型中具有的类型显示在括号中:

在此示例中,您会看到在派生复杂类型中其数据类型受到限制的特性。 |

•智能限制还会通知您内容模型中的无意义事件。例如,如果内容模型中存在的序列是不必要的,则会显示“无意义事件”。在此示例中,您可以看到“无意义事件”。

请注意:仅当内容模型包含错误时才会显示“无意义事件”。在某些情况下,内容模型包含“无意义事件”但仍然有效。在这些情况下,不会明确显示无意义事件以避免混淆。 |
有关“无意义事件”的更多信息,请参见XML Schema规范。 |