The dangers of XML for System Intergators

Just because a system has an XML interface does not mean you can use it. There are some very important questions you must ask in evaluating the usefulness of an XML interface.
XML provides a syntax and structure but imposes no obligation on how it must be used.

Consider the example of spoken language. English imposes rules on syntax and structure but does not oblige you to say anything useful or comprehensible to other people.

Data Transfer using English

  • “Give me the data!” is a valid instruction in English
  • “Please email me the 2007 sales figures, grouped by territory with a monthly breakdown in tabular format” is also a valid instruction.

Your assistant is likely to respond well to the 2nd instruction and not know how to respond to the first.

 

The same considerations apply to XML. Now consider an XML example:

Data Transfer using XMLFormat example 1

	< Data Xfer >
		< Send data now ! >
	< /Data Xfer >

Format example 2

	< poll >
		< source >
			< nodeId > 22 < /nodeId >
		< dest >
			< nodeId > 11 < /nodeId >
			< nodeName > node_A < /nodeName >
		< /dest >
		< responseRequirement > dataOnly < /responseRequirement >
		< query >
			< action > read < /action >
			< tableName > Setpoints < /tableName >
			< address > 10 < /address >
			< length > 3 < /length >
		< /query >
	< /poll >

 

Its not hard to see that the success of the query is dependent on the ability of the system to understand the query. Just because it complies with the rules of the XML syntax does not mean the interface will understand it.

Here are some key questions to ask:

1. Is the XML interface implemented using TCP/IP or UDP?

2. What is the XML Schema? The schema provides the structure of the XML packets used to query and respond with system data. It shows how the messages must be formatted and defines the data types of the various message fields (in the world or protocols the schema is equivalent to the protocol specification).

3. All the other normal questions you would ask of an interface – What data is available? How much can be transferred at once? What is the scaling? How are data objects addressed? etc…