如果元素具有元素内容或混合内容,则它的内容模型就是由组节点表示的。可以将子元素或另一个组添加至组节点,并指定在与 DTD 相关联的 XML 文件中使用一组元素的频率和方式。
下列指示信息是为“资源”透视图编写的,但是也将适用于其他多个透视图。
要编辑组节点,遵循下列步骤:
- 在 DTD 编辑器中打开 DTD。
- 在“大纲”视图中展开您想使用的元素的树。
- 单击您想使用的组节点。
- 在“设计”视图中,从模型组列表中选择顺序或选择。 这将指定元素组是按顺序排序的还是作为 XML 文件中的选项提供的。
- 从出现次数列表中选择适当的选项,以指示元素组在与此 DTD 相关联的 XML 文件中可能出现的频率。
- 要将另一个现有元素作为子元素添加至组,右键单击组节点并单击将元素添加至内容模型,然后选择该元素。
- 还可以通过右键单击组节点并单击将组添加至内容模型来将组添加至现有组节点。
注意:组节点的出现次数选项只指定整个元素组可以在 XML 文件中出现的频率。对于组中包含的每个子元素,还可以指定它可能出现的频率(即,子元素可能出现的频率与包含它的组可能出现的频率完全无关)。
提示:要更改列示在组节点下面的元素的顺序,只需单击想要移动的元素并将它拖动至期望位置。
创建包含小宠物列表的组节点
下列步骤显示如何创建包含小宠物列表的组节点,并说明您选择的选项如何影响可以在基于 DTD 文件的任何 XML 文件中使用组节点(以及它包含的元素)的方式:
- 创建称为 Pets.dtd 的新 DTD,并在 DTD 编辑器中打开该 DTD。
- 在“大纲”视图中,右键单击 DTD 文件并创建新元素 SmallPets。再创建三个元素 - Cats、Dogs 和 Fish。
- 展开 SmallPets 并选择 EMPTY 内容模型。从内容类型列表中选择混合内容。这意味着 SmallPets 元素可同时包含其他元素和字符数据。
- 现在,内容模型是由组节点
表示的。在该组节点下面将自动创建 #PCDATA 元素(对于字符数据)和新的子元素。选择 newChild 并在内容模型列表中选择 Dogs。
- 右键单击组节点,并单击将元素添加至内容模型。选择新的子节点,并在内容模型列表中选择 Cats。
- 重复上一步,并在内容模型列表中选择 Fish。
- 既然已经创建了小宠物列表,现在就必须决定是想让用户能够在基于此
Pets.dtd 文件的 XML 文件中选择所有小宠物还是只能选择其中一个小宠物。例如,您基于此 DTD 创建了名为 Pets.xml 的新 XML 文件,并且在该文件中创建了 SmallPets 元素。如果选择了顺序作为
DTD 文件中的模型组,则可以让所有小宠物(Cats、Dogs 和 Fish)都在 Pets.xml 文件的 SmallPets 元素中。但是,如果选择了选择作为模型组,则在 Pets.xml 文件的 SmallPets 元素中只能列示一个动物。可以具有 Cats、Dogs 或 Fish,但是一次只能具有一个。
- 现在,必须决定此元素组(小宠物列表)在与此 DTD 相关联的 XML 文件中的出现频率。可以指定它必须只出现一次(仅一次)、它必须出现一次或多次(一次或多次)、它根本不必出现(可选)、根本不可以使用它或者可以使用它任意次数(零次或多次)。注意:还可以指定每个子元素可能出现的频率。子元素可能出现的频率与包含该子元素的组可能出现的频率完全无关。因此,可以指定 SmallPets 组可以出现仅一次,而 Cats 元素可以出现几次(为此,选择 Cats 元素并单击一次或多次)。
- 指定组中子元素的顺序将影响可以在 XML 文件中的父元素的任何实例中如何使用这些子元素。例如,在
DTD 文件中,可以指定以下内容:<!ELEMENT SmallPets
(Dogs+ , Cats+ , Fish)+>,Pets.xml 文件中
SmallPets 的任何实例都必须包含
Dogs 的一个或多个实例,接着是
Cats 的一个或多个实例,接着只出现一次 Fish。绝对不能在
Dogs 后面出现一次 Fish,或者Cats 出现在 Dogs 前面。
- 还可以将组添加至现有组节点。选择该节点,右键单击它并单击将组添加至内容模型。如果决定想要通过分类成单独的组来对动物进行排序,则您可能想添加组节点。