Listing 1.Serialization of a structured Java or VB type
package example.org.People;
//Java class definition
class Person
{
String name;
float age;
short height;
}
//VB Type definition
Public Type Person
name As String
age As Single
height As Integer
End Type
<p:Person
xmlns:p='urn:example-org:people'>
<name>Martin</name>
<age>33</age>
<height>64</height>
</p:Person>
Listing 2. Serialization of a Java or VB array
package example.org.Num;
//Java class definition
class Numbers
{
long [5] data;;
}
//VB Type definition
Public Type Numbers
data(5)As Long
End Type
<p:Numbers
xmlns:p='urn:example-org:num'>
<data enc:arrayType='xsd:long [5]'
xmlns:enc='http://schemas.xmlsoap.org/soap/encoding/'>
<enc:long>2</enc:long>
<enc:long>3</enc:long>
<enc:long>5</enc:long>
<enc:long>7</enc:long>
<enc:long>9</enc:long>
</data>
</p:Numbers>
Listing 3.Serializing structured data
package example.org.People;
//Java class definitions
class PersonName
{
String givenName;
String familyName;
}
class Person
{
PersonName name;
float age;
short height;
public static void AddPerson (Person person );
}
//VB Type definitions
Public Type PersonName
givenName As String
familyName As String
End Type
Public Type Person
name As PersonName
age As Single
height As Integer
End Type
Public Sub AddPerson (ByRef person As Person )
End Sub
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle='http://schemas.xmlsoap.org/soap/
encoding/'>
<soap:Body>
<p:AddPerson
xmlns:p='urn:example-org:people'>
<person>
<name>
<givenName>Martin</givenName>
<familyName>Gudgin</familyName>
</name>
<age>33</age>
<height>64</height>
</person>
</p:AddPerson>
</soap:Body>
</soap:Envelope>
Listing 4. Multireference accessors
package example.org.People;
//Java class definition
class PersonName
{
String givenName;
String familyName;
}
class Person
{
PersonName name;
float age;
short height;
public static boolean Compare (Person p1,Person p2 );
}
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle='http://schemas.xmlsoap.org/soap/
encoding/'>
<soap:Body xmlns:p='urn:example-org:people'>
<p:Compare>
<p1 href='#pid1'/>
<p2 href='#pid1'/>
</p:Compare>
<p:Person id='pid1'>
<name>
<givenName>Martin</givenName>
<familyName>Gudgin</familyName>
</name>
<age>33</age>
<height>64</height>
</p:Person>
</soap:Body>
</soap:Envelope>
Listing 5. Null references
Null references
package example.org.Nodes;
//Java class definition
class Node
{
String val;
Node next;
public static long ListLength (Node node );
}
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle='http://schemas.xmlsoap.org/soap/
encoding/'>
<next xmlns:xsi='http://www.w3.org/2001/XMLSchema'
-instance xsi:nil='1'/>
<soap:Body >
<n:ListLength xmlns:n='urn:example-org:nodes'>
<node>
<val>New York</val>
<next>
<val>Paris</val>
<next>
<val>London</val>
</next>
</next>
</node>
</n:ListLength>
</soap:Body>
</soap:Envelope>
Listing 6. Dynamically typed data
package example.org.Poly;
//Java definitions
class Poly
{
public static void Execute (Object param );
}
'Visual Basic Definition
Public Sub Execute (param As Variant )
End Sub
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle='http://schemas.xmlsoap.org/soap/
encoding/'>
<soap:Body>
<p:Execute
xmlns:p='urn:example-org:poly'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
<param xsi:type='xsd:long'>2000</param>
</p:Execute>
</soap:Body>
</soap:Envelope>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle='http://schemas.xmlsoap.org/soap/
encoding/'>
<soap:Body>
<p:Execute
xmlns:p='urn:example-org:poly'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:pre='urn:example-org:people'>
<param xsi:type='pre:Person'>
<name>
<givenName>Martin</givenName>
<familyName>Gudgin</familyName>
</name>
<age>33</age>
<height>64</height>
</param>
</p:Execute>
</soap:Body>
</soap:Envelope>
Listing 7. Simple array example
<soap:Envelope
xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'
soap:encodingStyle='http://schemas.xmlsoap.org/soap/
encoding/'>
<soap:Body>
<m:MethodResponse
xmlns:m='urn:example-org:someuri'>
<enc:Array
xmlns:enc='http://schemas.xmlsoap.org/soap encoding/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
enc:arrayType='xsd:long [5]'>
<enc:long>2</enc:long>
<enc:long>3</enc:long>
<enc:long>5</enc:long>
<enc:long>7</enc:long>
<enc:long>9</enc:long>
</enc:Array>
</m:MethodResponse>
</soap:Body>
</soap:Envelope>
Listing 8. Multidimensional array example
<soap:Envelope
xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'
soap:encodingStyle='http://schemas.xmlsoap.org/soap/
encoding/'>
<soap:Body>
<m:Method
xmlns:m='urn:example-org:some-uri'>
<enc:Array
xmlns:enc='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
enc:arrayType='xsd:string [2,3]'>
<item>row 1 column 1</item>
<item>row 1 column 2</item>
<item>row 1 column 3</item>
<item>row 2 column 1</item>
<item>row 2 column 2</item>
<item>row 2 column 3</item>
</enc:Array>
</m:Method>
</soap:Body>
Listing 9. Partial array transmission
<soap:Envelope
xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'
soap:encodingStyle='http://schemas.xmlsoap.org/soap/
encoding/'>
<soap:Body>
<m:Method xmlns:m='urn:example-org:someuri'>
<enc:Array
xmlns:enc='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
enc:arrayType='xsd:string [9]'
enc:offset='[2]'>
<item>Earth</item>
<item>Mars</item>
<item>Jupiter</item>
</enc:Array>
</m:Method>
</soap:Body>
</soap:Envelope>
Listing 10. Sparse arrays
<soap:Envelope
xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'
soap:encodingStyle='http://schemas.xmlsoap.org/soap/
encoding/'>
<soap:Body>
<m:Method xmlns:m='urn:example-org:someuri'>
<enc:Array
xmlns:enc='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
enc:arrayType='xsd:string [9]'>
<item enc:position='[1]'>Venus</item>
<item enc:position='[3]'>Mars</item>
<item enc:position='[7]'>Neptune</item>
</enc:Array>
</m:Method>
</soap:Body>
</soap:Envelope>
Listing 11. Jagged arrays with single reference accessors
<soap:Envelope
xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'
soap:encodingStyle='http://schemas.xmlsoap.org/soap/
encoding/'>
<soap:Body>
<enc:Array
xmlns:enc='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
enc:arrayType='xsd:string [][2]'>
<enc:Array enc:arrayType='xsd:string [2]'>
<item>Mercury</item>
<item>Venus</item>
</enc:Array>
<enc:Array enc:arrayType='xsd:string [6]'>
<item>Mars</item>
<item>Jupiter</item>
<item>Saturn</item>
<item>Uranus</item>
<item>Neptune</item>
<item>Pluto</item>
</enc:Array>
</enc:Array>
</m:Method>
</soap:Body>
</soap:Envelope>
Listing 12. Jagged arrays with multireference accessors
<soap:Envelope
xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'
soap:encodingStyle='http://schemas.xmlsoap.org/soap/
encoding/'>
<soap:Body
xmlns:enc='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
<m:Method xmlns:m='urn:some-uri'>
<enc:Array enc:arrayType='xsd:string [][2]'>
<item href='#id1'/>
<item href='#id2'/>
</enc:Array>
</m:Method>
<enc:Array id='id1'enc:arrayType='xsd:string [2]'>
<item>Mercury</item>
<item>Venus</item>
</enc:Array>
<enc:Array id='id2'
enc:arrayType='xsd:string [6]'>
<item>Mars</item>
<item>Jupiter</item>
<item>Saturn</item>
<item>Uranus</item>
<item>Neptune</item>
<item>Pluto</item>
</enc:Array>
</soap:Body>
</soap:Envelope>