another example of failing to bind a response to the schema
<queryResponse xmlns="http://www.biomart.org/MartServiceSoap">
<resultsRow>
<item attribute="ensembl_gene_id" xsi:type="xsd:string"
modelReference="http://www.embracegrid.info/ws/sawsdl/spec/ontology/data
bases#gene">Ensembl Gene ID</item>
<item attribute="start_position" xsi:type="xsd:string"
modelReference="">Gene Start (bp)</item>
<item attribute="end_position" xsi:type="xsd:string"
modelReference="">Gene End (bp)</item>
</resultsRow>
the <item> attribute called attribut is not in the schema ( nor are its
other attributes)
infact Item is declared as a simple TextContent element
<xs:complexType name="resultsRow">
<xs:sequence>
<xs:element name="item" type="xs:string" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
so the resultsRows cant be bound to JAXB
and we need to look at the structure of the response XML to be able to
parse it...
presumably there is a one to one correspondence between the
<Attibute><name> value set in the query with the <Item attribute.value>?
with guaranteed order?
trevor
Trevor Paterson PhD
new email [email protected]
<mailto:[email protected]>
Bioinformatics
The Roslin Institute
Edinburgh University
Scotland EH25 9PS
phone +44 (0)131 5274477
http://www.roslin.ed.ac.uk <http://www.roslin.ed.ac.uk/>
http://www.comparagrid.org <http://www.comparagrid.org/>
http://www.thearkdb.org <http://www.thearkdb.org/>
Please consider the environment before printing this e-mail
The University of Edinburgh is a charitable body, registered in Scotland
with registration number SC005336
Disclaimer:This e-mail and any attachments are confidential and intended
solely for the use of the recipient(s) to whom they are addressed. If
you have received it in error, please destroy all copies and inform the
sender.
________________________________
From: [email protected] [mailto:[email protected]]
On Behalf Of trevor paterson (RI)
Sent: 27 March 2009 13:52
To: [email protected]
Subject: [mart-dev] Biomart SOAP responses are not schema valid
I think i understand some of the reasons why JAXB binding of
biomart webservice responses might be failing
the data returned is not 100% valid with the schema at
http://www.biomart.org/biomart/martxsd
for example, the response to a query includes
<mart>
<name xsi:type="xsd:string">ensembl</name>
<displayName xsi:type="xsd:string">ENSEMBL 53
GENES (SANGER UK)</displayName>
. . .
<redirect xsi:nil="true" xsi:type="xsd:int" />
**********i.e. an empty element************
</mart>
which is not valid against the schema type
<xs:complexType name="mart">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="displayName" type="xs:string"/>
. . .
<xs:element name="redirect" type="xs:int"/>
</xs:sequence>
</xs:complexType>
for this data to be valid the redirect element need to be set to
<xs:element name="redirect" type="xs:int" nillable="true"/>
[there may be other invalid stuff in there....and dealing with
the namespaces when pulling apart SOAP elements to JAXB unmarshall is
also problematic (no suprise there!)]
So when you try to bind/unmarshall the content of the SOAP
response - it finds no <mart>s in the response..........
I guess JAXB binding of the SOAP responses is not the way to go
unless the responses where guaranteed valid....or the binding code is
hacked
so Tom Oinn was right - i will just parse XML myself in the
client.......... and forget about doing anything 'clever'!
Trevor
Trevor Paterson PhD
new email [email protected]
<mailto:[email protected]>
Bioinformatics
The Roslin Institute
Edinburgh University
Scotland EH25 9PS
phone +44 (0)131 5274477
http://www.roslin.ed.ac.uk <http://www.roslin.ed.ac.uk/>
http://www.comparagrid.org <http://www.comparagrid.org/>
http://www.thearkdb.org <http://www.thearkdb.org/>
Please consider the environment before printing this e-mail
The University of Edinburgh is a charitable body, registered in
Scotland with registration number SC005336
Disclaimer:This e-mail and any attachments are confidential and
intended solely for the use of the recipient(s) to whom they are
addressed. If you have received it in error, please destroy all copies
and inform the sender.