Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.このコンテンツは選択した言語では利用できません。
36.3. Using Unbound Attributes
Overview リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
XML Schema has a mechanism that allows you to leave a place holder for an arbitrary attribute in a complex type definition. Using this mechanism, you can define a complex type that can have any attribute. For example, you can create a type that defines the elements <robot name="epsilon" />, <robot age="10000" />, or <robot type="weevil" /> without specifying the three attributes. This can be particularly useful when flexibility in your data is required.
Defining in XML Schema リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Undeclared attributes are defined in XML Schema using the
anyAttribute
element. It can be used wherever an attribute element can be used. The anyAttribute
element has no attributes, as shown in Example 36.7, “Complex Type with an Undeclared Attribute”.
Example 36.7. Complex Type with an Undeclared Attribute
The defined type, arbitter, has two elements and can have one attribute of any type. The elements three elements shown in Example 36.8, “Examples of Elements Defined with a Wild Card Attribute” can all be generated from the complex type arbitter.
Example 36.8. Examples of Elements Defined with a Wild Card Attribute
<officer rank="12"><name>...</name><rate>...</rate></officer> <lawyer type="divorce"><name>...</name><rate>...</rate></lawyer> <judge><name>...</name><rate>...</rate></judge>
<officer rank="12"><name>...</name><rate>...</rate></officer>
<lawyer type="divorce"><name>...</name><rate>...</rate></lawyer>
<judge><name>...</name><rate>...</rate></judge>
Mapping to Java リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
When a complex type containing an
anyAttribute
element is mapped to Java, the code generator adds a member called otherAttributes
to the generated class. otherAttributes
is of type java.util.Map<QName, String>
and it has a getter method that returns a live instance of the map. Because the map returned from the getter is live, any modifications to the map are automatically applied. Example 36.9, “Class for a Complex Type with an Undeclared Attribute” shows the class generated for the complex type defined in Example 36.7, “Complex Type with an Undeclared Attribute”.
Example 36.9. Class for a Complex Type with an Undeclared Attribute
Working with undeclared attributes リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
The
otherAttributes
member of the generated class expects to be populated with a Map
object. The map is keyed using QNames
. Once you get the map , you can access any attributes set on the object and set new attributes on the object.
Example 36.10, “Working with Undeclared Attributes” shows sample code for working with undeclared attributes.
Example 36.10. Working with Undeclared Attributes
The code in Example 36.10, “Working with Undeclared Attributes” does the following: