Details
-
Bug
-
Status: To Do
-
Minor
-
Resolution: Unresolved
-
None
-
None
Description
If a web service defines an output element with invalid maxOccurs=0, for instance:
<xsd:element maxOccurs="0" minOccurs="0" name="outputUrl" type="xsd:anyURI"/>
Then Taverna's XML splitters will, instead of giving a warning about the invalid URL, return a list of the content of all elements instead of <outputUrl>. So for instance if the input is:
<blah> <fish>Soup</fish> <count>15</count> <outputUrl>http://google.com/</outputUrl> </blah>
Given that "fish" and "count" are declared properly, their ports from the XML output splitter are correct, but for the port 'outputUrl' instead you get:
Soup
15
http://google.com/
Suggested fix:
Give warning about invalid WSDL - and return error document on the given port. (Or don't include the port). We can't just return the element when maxOccurs is wrong, what if there's two <outputUrl>s - should we return a list (depth 1) on the port then? What about if it was declared as maxOccurs=1 (ie. we make the port of depth 0) and we get 3 such elements? Probably best to give an error whenever there is a mismatch.