The MRM XML parser in sensitive to xsi:type attributes in the XML
document. It modifies the data type of the element accordingly and
adds the xsi:type attribute into the message tree.
The MRM XML writer is sensitive to xsi:type attributes in the message
tree. It produces xsi:type attributes according to XML Wire Format
message set property Output policy for xsi:type attributes.
For example, xsi:type attributes can be removed, output on all elements
or output according to rules specified in the SOAP standard.
If validation is enabled for an IBM® Integration Bus message
flow, the validation logic is sensitive to xsi:type attributes and
uses them to modify the validation of the element. It also validates
the values of xsi:type attributes by using the rules described in
XML
Schema Part 1: Structures on the World Wide Web Consortium
(W3C) website.
There are several important points to remember when parsing and
writing XML documents that contain xsi:type attributes.
- In order to detect and use xsi:type attributes, the message set
must be namespace-enabled. To make a message set namespace-enabled,
check the message set property Use namespaces.
- If the value of the xsi:type attribute contains a namespace prefix,
the prefix is expanded into a fully qualified URI by the MRM XML parser.
If the same xsi:type attribute is produced later by the MRM XML writer,
the same prefix is not automatically used for the value. You can control
the prefixes used on output by using the Namespace settings list
in the XML Wire Format message set properties. If no prefix is supplied,
the XML writer assigns a default prefix.
- If the xsi:type attribute of an element does not resolve to a
type in the model, the behavior depends on whether MRM validation
is enabled. If not validating, the MRM assumes that the type of the
element is that declared in the model, and continue. If validating,
a validation exception occurs.
- If MRM validation is enabled, any required xsi:type attributes
must be present in the message tree at the point when validation is
performed. An xsi:type attribute is required when its value is different
from the data type of the element as defined in the message model
(this most commonly occurs when using XML Schema type derivation).
- If validation is being performed on an input message, the MRM
XML parser ensures that xsi:type attributes appear in the message
tree, as described above.
- If validation is being performed on an output message, you must
ensure that the correct xsi:type attributes appear in the message
tree. Ensure that any required xsi:type attributes are copied from
input message tree to output message tree, or are explicitly created
in the output message tree.
- If you are using simple types that are xsd:unions, an xsi:type
attribute can be used to direct the MRM XML parser when resolving
the union.
- If you have migrated from an earlier version of WebSphere® Message Broker that was not sensitive
to xsi:type attributes, you might notice some changes of behavior.
For example, xsi:type attributes are no longer treated as self-defining
attributes, so they appear in the message tree with the name ‘type'
instead of ‘@type'. If your message flow logic is sensitive
to xsi:type attributes in the message tree, change your message flow
to comply with the current behavior.
For more information about xsi:type attributes, see
XML
Schema Part 0: Primer on the World Wide Web Consortium (W3C)
website.