Solved

xsi:nil and xsi:type attribute order in an element. Does it matter?

Posted on 2007-11-27
1
829 Views
Last Modified: 2012-06-27
Hi,

I have a strange error with my integration platform (webMethods). When i send xsi:nil="true" in an element the element only gets parsed as null if xsi:nil="true" is the last attribute in the element.

I have made a small web service just to test it. It will print out the input after the integration platform have parsed it from xml to its internal format.
This is how the different request looks like, coupled with the printouts of the variable value (notice that the only change in the request is the middle row that I have put two lank rows around.).

Request 1:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:jak="http://www.test.com/icc/tip/test/jakothun">
   <soapenv:Header/>
   <soapenv:Body>
      <jak:nillableTest soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <jakobTest.nillableTest.docs_x003A_myNillableTestDoc xsi:type="prin:__myNillableTestDoc" xmlns:prin="http://localhost/jakobTest/nillableTest/flow/printPayload">

            <optionalAndNotNull xsi:type="xsd:string" xsi:nil="true" />

         </jakobTest.nillableTest.docs_x003A_myNillableTestDoc>
      </jak:nillableTest>
   </soapenv:Body>
</soapenv:Envelope>

Answer1: (parsed value outputted to a log):
optionalAndNotNull = null

Request2:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:jak="http://www.test.com/icc/tip/test/jakothun">
   <soapenv:Header/>
   <soapenv:Body>
      <jak:nillableTest soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <jakobTest.nillableTest.docs_x003A_myNillableTestDoc xsi:type="prin:__myNillableTestDoc" xmlns:prin="http://localhost/jakobTest/nillableTest/flow/printPayload">

            <optionalAndNotNull xsi:nil="true" xsi:type="xsd:string" />

         </jakobTest.nillableTest.docs_x003A_myNillableTestDoc>
      </jak:nillableTest>
   </soapenv:Body>
</soapenv:Envelope>

Answer2:
optionalAndNotNull = ''
(empty string with two ' around)

Now to the question. Is there any XML experts out here that know if the w3c XML standard specify anything about which order xsi:nil attributes must be specified to be correct and always parsed correctly by good xml tools?
Or is this just a silly bug in my integration platform, that I should report to them instead?
0
Comment
Question by:sawdustwilly
1 Comment
 
LVL 60

Accepted Solution

by:
Geert Bormans earned 125 total points
ID: 20359533
order of attributes should not be important in XML terms.
A set of attributes is an unordered nodeset
Any application that requires a specific attribute to be the last attribute in the row is erroneous
so you should report this to the integration platform vendor

cheers

Geert
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Scraping specific data within an XML document 19 60
Create html table using xsl 8 42
XML XSL Choose example 3 32
XSLT Display Label Name 1 27
The Problem How to write an Xquery that works like a SQL outer join, providing placeholders for absent data on the outer side?  I give a bit more background at the end. The situation expressed as relational data Let’s work through this.  I’ve …
Many times as a report developer I've been asked to display normalized data such as three rows with values Jack, Joe, and Bob as a single comma-separated string such as 'Jack, Joe, Bob', and vice versa.  Here's how to do it. 
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question