XML confuses me sometimes, but I'm trying to get this figured out. What the vendor is telling me doesn't make sense but again, XML and I don't get along :)
I have some XML that I'm sending to a vendor's web service that is giving me random failures:
<root>
<Request>
<Driver id="1" VehId="1">...</Driver>
<Driver id="2" VehId="1">...</Driver>
<Driver id="3" VehId="2">...</Driver>
<Vehicle id="1">...</Vehicle>
<Vehicle id="2">...</Vehicle>
<Driver id="4" VehId="2">...</Driver>
</Request>
</root>
There is no XSLT or XSD to compare against to see if my XML is valid.
The vendor states that the XML is invalid because Driver #4 is in the wrong area. The XPath for Driver should be root/Request/Driver and Vehicle is root/Request/Vehicle.
Is it common that XML parsers would force an element order, especially if there is no XSD to compare the XML to? The vendor's support is slow to get back with me, so I want to know what good common practice is.
Followup
I complained enough to our account rep about not being able to test this (and made it sound like they were just trying to get support money) that it turns out that the Developers have the XSD, but Support doesn't. So I had been talking to the wrong group *facepalm*
I got the XSD, and it does enforce a specific order of elements.
Now to fight them in regards to their own sample XML doesn't follow the schema, but at least now I have something to test against.
If there is no XSD (XML schema) at hand, then all you can check for is whether or not your XML is well formed.
In your case - it is. There are no overlapping XML tags, no XML tag that are left open or anything of that sort.
If the vendor needs to enforce things like order inside the XML, he ought to provide an XSD file - otherwise, his "requirements" cannot be validated and checked....