35.5.3. Choice 元素的出现限制
概述 复制链接链接已复制到粘贴板!
						默认情况下,选择 元素的结果只能出现在复杂类型的实例中。您可以使用 minOccurs 属性及其 mxOccurs 属性更改元素所定义的结构的次数。您可以使用这些属性,指定所选类型可能为零到复杂类型的实例中无限次。为选择类型选择的元素对于每种类型来说都不需要相同。
					
在 XML Schema 中使用 复制链接链接已复制到粘贴板!
						minOccurs 属性指定必须出现所选类型的最小次数。其值可以是任意正整数。将 minOccurs 属性设置为 0 指定,可选择类型不需要在复杂类型的实例中出现。
					
						maxOccurs 属性指定可选择类型可显示的最大次数。其值可以是任意非零、正整数或未绑定的 。将 maxOccurs 属性设置为 unbounded 时,指定所选类型可能会显示无限次。
					
						例 35.18 “Choice Occurrence Constraints” 显示选择类型 ClubEvent 的定义,其中选择出现的限制。整个选择类型可以重复 0 到未绑定时间。
					
例 35.18. Choice Occurrence Constraints
映射到 Java 复制链接链接已复制到粘贴板!
						 与单个实例选择结构不同,XML Schema 选择结构可以多次通过单个成员变量映射到 Java 类。这个单一成员变量是一个 List<T > 对象,它保存多个顺序发生的所有数据。例如,如果 例 35.18 “Choice Occurrence Constraints” 中定义的序列发生两次,则列表将有两个项目。
					
						Java 类的成员变量的名称通过串联 member 元素的名称来派生。元素名称由 Or 分隔,变量名称的第一个字母转换为小写。例如,从 例 35.18 “Choice Occurrence Constraints” 生成的成员变量将命名为 memberNameOrGuestName。
					
存储在列表中的对象类型取决于成员元素的类型。例如:
- 
								如果成员元素是相同类型,生成的列表将包含 
JAXBElement<T>对象。JAXBElement<T> 对象的基础类型由 member 元素类型的普通映射决定。 - 如果成员元素是不同类型的,且其 Java 表示实施了通用接口,则列表将包含常见接口的对象。
 - 如果成员元素是不同类型的,其 Java 表示扩展通用基本类,则列表将包含常见基本类的对象。
 - 
								如果没有满足其他条件,该列表将包含对象 
对象。 
生成的 Java 类将仅具有 member 变量的 getter 方法。getter 方法返回对 live 列表的引用。对返回列表所做的任何修改都将对实际对象产生影响。
						Java 类使用 @XmlType 注释进行解码。注解的 name 属性设置为 XML Schema 定义中 parent 元素的 name 属性的值。该注解的 propOrder 属性包含代表序列中元素的单个成员变量。
					
						代表所选结构中元素的 member 变量通过 @XmlElements 注释进行解码。@XmlElements 注释包含以逗号分隔的 @XmlElement 注释列表。列表有一个 @XmlElement 注释,适用于类型 XML Schema 定义中定义的每个 member 元素。列表中 @XmlElement 注解的 name 属性设为 XML Schema 元素 元素的 name 属性的值,以及它们的 type 属性设为由 XML Schema 元素类型映射生成的 Java 类。
					
例 35.19 “使用 Occurrence Constraint 的选择结构的 Java 代表” 显示 例 35.18 “Choice Occurrence Constraints” 中定义的 XML Schema 选择结构的 Java 映射。
例 35.19. 使用 Occurrence Constraint 的选择结构的 Java 代表
minOccurs 设为 0 复制链接链接已复制到粘贴板!
						如果只指定   元素,其值为 minOccurs 0, 则代码生成器会生成 Java 类,就像未设置 minOccurs 属性一样。