35.6. 使用模型组
概述 复制链接链接已复制到粘贴板!
XML 架构模型组是方便的快捷方式,允许您从用户定义的复杂类型引用一组元素。例如,您可以定义一组对应用中多种类型通用的元素,然后重复引用组。模型组使用 group
元素定义,类似于复杂的类型定义。模型组到 Java 的映射也类似于复杂类型的映射。
在 XML 架构中定义模型组 复制链接链接已复制到粘贴板!
您可以使用 group
元素和 name
属性在 XML Schema 中定义模型组。name
属性的值是一个字符串,用于引用整个架构中的组。group
元素(如 complexType
元素)可以具有 sequence
元素、all
元素或 choice
元素作为其即时子。
在子元素中,您可以使用 element 元素
定义组的成员。对于组的每个成员,指定一个 element
元素。组成员可以使用 元素
元素的任何标准属性,包括 minOccurs
和 maxOccurs
。因此,如果您的组有三个元素,并且其中一个可能发生三次,则您可以使用三个 元素
定义组,其中之一使用 maxOccurs="3"。例 35.22 “XML 架构模型组” 显示具有三个元素的模型组。
例 35.22. XML 架构模型组
在类型定义中使用模型组 复制链接链接已复制到粘贴板!
定义了模型组后,就可以将其用作复杂类型定义的一部分。要在复杂类型定义中使用模型组,请使用 group
元素和 ref
属性。ref
属性的值是定义时提供给组的名称。例如:要使用 例 35.22 “XML 架构模型组” 中定义的组,请使用 {ref="tns:passenger" >,如 例 35.23 “使用模型组进行复杂类型” 所示。
例 35.23. 使用模型组进行复杂类型
当在类型定义中使用模型组时,组将变为类型的成员。因此,保留
实例有四个成员元素。第一个元素是 passenger
元素,它包含由 例 35.22 “XML 架构模型组” 中显示的组定义的成员元素。例 35.24 “带有模型组的类型实例” 中显示 保留
实例示例。
例 35.24. 带有模型组的类型实例
映射到 Java 复制链接链接已复制到粘贴板!
默认情况下,模型组仅在包含复杂类型定义中时映射到 Java 工件。为包含模型组的复杂类型生成代码时,Apache CXF 将模型组的成员变量包含在为类型生成的 Java 类中。代表模型组的成员变量根据模型组的定义标注。
例 35.25 “使用组键入” 显示为 例 35.23 “使用模型组进行复杂类型” 中定义的复杂类型生成的 Java 类。
例 35.25. 使用组键入
多次发生 复制链接链接已复制到粘贴板!
您可以通过将 group 元素的 maxOccurs
属性设置为大于 1 的值来指定模型 组
显示多次。要允许多次出现 Apache CXF 模型组 Apache CXF 将模型组映射到 List<T>
对象。List<T
> 对象按照组第一个子级的规则生成:
-
如果组是使用
序列
元素定义的,请参阅 第 35.5.5 节 “序列发生的限制”。 -
如果组是使用
选择
元素定义的,请参阅 第 35.5.3 节 “选择元素上的发生限制”。