We begin with a simple instance document.
<ipo:purchaseOrder xmlns:ipo="http://www.example.com/IPO" orderDate="1999-12-05"> <shipTo exportCode="1" xsi:type="ipo:UKAddress" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <name>Helen Zoe</name> <street>47 Eden Street</street> <city>Cambridge</city> <postcode>CB1 1JR</postcode> </shipTo> <billTo xsi:type="ipo:USAddress" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <name>Robert Smith</name> <street>8 Oak Avenue</street> <city>Old Town</city> <state>PA</state> <zip>95819</zip> </billTo> <items> <item partNum="833-AA"> <productName>Lapis necklace</productName> <quantity>1</quantity> <USPrice>99.95</USPrice> <ipo:comment>Want this for the holidays!</ipo:comment> <shipDate>1999-12-05</shipDate> </item> </items> </ipo:purchaseOrder> |
The instance document contains a billTo element. As you can see from the schema in the preceding section, a billTo is an Address. The Address type has two extensions, USAddress and UKAddress, and a billTo element can be either of these types. Elements with substitutable types are required to have an xsi:type attribute that clarifies the actual type of the element.
When unmarshaling an instance document that contains substitutable elements, HydraExpress uses the xsi:type attribute to determine the correct class type to create. In your application code, you can use the class getTypeId() method to determine its type.
Copyright © Rogue Wave Software, Inc. All Rights Reserved.
The Rogue Wave name and logo are registered trademarks of Rogue Wave Software, and HydraExpress is a trademark of Rogue Wave Software. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.