35.2. 属性
概述 复制链接链接已复制到粘贴板!
Apache CXF 支持在 complexType 元素的范围内使用属性元素和 元素。当为 XML 文档属性声明定义结构时,提供添加标签中指定的信息的方法,而不是标签包含的值。例如,当描述 XML 元素 <value attribute Groupcurrency ="euro">410<\value> in XML Schema the currency 属性时,使用 例 35.5 “XML 架构定义和属性” 所示的 attribute 项描述。
attributeGroup 元素允许您定义一组可重复使用的属性,这些属性可以被 schema 定义的所有复杂类型引用。例如,如果您要定义一系列都使用属性类别和 pubDate 的元素,您可以使用这些属性定义属性组,并在所有使用该属性的元素中引用它们。这在 例 35.7 “属性组定义” 中显示。
当描述在开发应用程序逻辑中使用的数据类型时,其 use 属性设置为 optional 或 required 的属性将被视为结构的元素。对于复杂类型描述中包含的每个属性声明,在类中为 属性生成元素,以及适当的 getter 和 setter 方法。
在 XML 架构中定义属性 复制链接链接已复制到粘贴板!
XML Schema 属性 元素具有一个必需属性,名为,用于标识属性。它还有四个可选属性,它们在 表 35.2 “用于定义 XML 架构中属性的可选属性” 中进行了描述。
| 属性 | 描述 |
|---|---|
|
|
指定是否需要属性。有效值为、 |
|
| 指定属性可以采用的值类型。如果没有使用属性的 schema 类型,则必须在线定义。 |
|
|
指定用于属性的默认值。只有在 |
|
|
指定用于属性的固定值。只有在 |
例 35.5 “XML 架构定义和属性” 显示一个属性元素,定义属性 currency,其值为字符串。
例 35.5. XML 架构定义和属性
如果在 attribute 元素中省略了 type 属性,则必须使用命令行描述数据格式。例 35.6 “带有 In-Line Data Description 的属性” 显示 属性 ( category )的一个属性元素,它可以取值 autobiography、non-fiction 或 fiction。
例 35.6. 带有 In-Line Data Description 的属性
在 XML Schema 中使用属性组 复制链接链接已复制到粘贴板!
在复杂类型定义中使用属性组分为两个步骤:
定义属性 group。
属性组使用带有多个属性子元素的
元素来定义。attributeGroupattributeGroup需要一个name属性,用于定义用于引用属性组的字符串。属性元素定义属性组的成员,并如 “在 XML 架构中定义属性”一节 所示指定。例 35.7 “属性组定义” 显示属性组catalogIndecies的描述。属性组有两个成员:类别,它是可选的,而pubDate是必需的。例 35.7. 属性组定义
<attributeGroup name="catalogIndices"> <attribute name="category" type="catagoryType" /> <attribute name="pubDate" type="dateTime" use="required" /> </attributeGroup><attributeGroup name="catalogIndices"> <attribute name="category" type="catagoryType" /> <attribute name="pubDate" type="dateTime" use="required" /> </attributeGroup>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在复杂类型的定义中使用属性组。
您可以使用
attributeGroup元素和ref属性在复杂类型定义中使用属性组。ref属性的值是给定您要用作类型定义一部分的属性组的名称。例如,如果要使用复杂类型dvdType中的属性组catalogIndecies,您可以使用 <attributeGroup ref="catalogIndecies" />,如 例 35.8 “具有属性组的复杂类型” 所示。例 35.8. 具有属性组的复杂类型
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将属性映射到 Java 复制链接链接已复制到粘贴板!
属性与 member 元素映射到 Java 非常相似。必要属性和可选属性映射到生成的 Java 类中的成员变量。成员变量使用 @XmlAttribute 注释进行解码。如果需要该属性,则 @XmlAttribute 注释的 required 属性设置为 true。
例 35.9 “techdoc Description” 中定义的复杂类型映射到 例 35.10 “techdoc Java Class” 中显示的 Java 类。
例 35.9. techdoc Description
例 35.10. techdoc Java Class
如 例 35.10 “techdoc Java Class” 中所示,default 属性和 fixed 属性指示代码生成器将代码添加到为属性生成的 getter 方法中。此额外代码可确保如果没有设置值,则返回指定的值。
fixed 属性被视为与 default 属性相同。如果您希望 固定 属性被视为 Java 常数,您可以使用 第 38.5 节 “自定义修复的值属性映射” 中描述的自定义。
将属性组映射到 Java 复制链接链接已复制到粘贴板!
属性组映射到 Java,就像类型定义中明确使用组成员一样。如果属性组有三个成员,且在复杂类型中使用,则该类型生成的类将包含 member 变量,以及 attribute 组的每个成员的 getter 和 setter 方法。例如,例 35.8 “具有属性组的复杂类型” 中定义的复杂类型,Apache CXF 会生成一个包含成员变量 类别和 pubDate 的类,以支持属性组的成员,如 例 35.11 “dvdType Java Class” 所示。
例 35.11. dvdType Java Class