Topic
  • No replies
JSC1_Frederik_Gierschner
2 Posts

Pinned topic XSD extension element not fully supported

‏2012-08-13T11:10:33Z |
Hello,

I try to call a webservice which provides a complex WSDL Hello,
I try to call a webservice which provides a complex WSDL referencing some XSDs. The XSDs make use of the XSD element <xsd:extension base="BaseType"> ... </xsd:extension>.
By using this element you can extend existing types you already defined in your XSD. Here is an example:

BaseType:

<xs:complexType name=
"Object"> <xs:complexContent mixed=
"false"> <xs:sequence> <xs:element minOccurs=
"0" name=
"Parent" nillable=
"true" type=
"tns:Object"/> </xs:sequence> </xs:complexContent> </xs:complexType>


First extension:

<xs:complexType name=
"NewObject"> <xs:complexContent mixed=
"false"> <xs:extension base=
"q8:Object" xmlns:q8=
"...."> <xs:sequence> <xs:element minOccurs=
"0" name=
"Documents" nillable=
"true" type=
"tns:Info"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>

Second extension:

<xs:complexType name=
"NewNewObject"> <xs:complexContent mixed=
"false"> <xs:extension base=
"tns:NewObject"> <xs:sequence> <xs:element minOccurs=
"0" name=
"Test" nillable=
"true" type=
"xs:string"/> <xs:element minOccurs=
"0" name=
"Name" nillable=
"true" type=
"xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>

The type which is used in the WSDL is the base type “Object”. In Cast Iron Studio it is possible to replace the base type with a type which directly extends this base type (here “NewObject”). The replacement is done by right-clicking the base type  “Substitute Node With …”. Now all types which directly extend the base type are displayed but I have to use a type which extends the extending type (“NewNewObject”). The problem is that type which do not belong to the first level of inheritance are not being displayed.

It is not possible to change the WSDL. Are there any solutions for this problem?

Thanks!