I'm not familiar too but I supposed the following definition is sufficiant:
COMMON.WSDL <?xml version="1.0" encoding="UTF-8"?> <definitions targetNamespace="urn:common" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn:common"> <types> <xsd:schema> <xsd:element name="UserIdentifier" type="tns:PhoneNumber, tns:MailAddress"/> <xsd:complexType name="PhoneNumber"> <xsd:attribute name="phoneNumber" type="xsd:string" use="optional"/> </xsd:complexType> <xsd:complexType name="MailAddress"> <xsd:attribute name="phoneNumber" type="xsd:string" use="optional"/> </xsd:complexType> </xsd:schema> </types> .... and FOOBAR.WSDL: <?xml version="1.0" encoding="UTF-8"?> <definitions targetNamespace="urn:foobar" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:typens="urn:foobar-type" xmlns:common="urn:common" xmlns:tns="urn:foobar"> <import location="Common.wsdl" namespace="urn:common"> </import> <message name="sendRequest"> <part name="userId" type="common:UserIdentifier"/> <part name="msg" type="xsd:string"/> </message> .... I did not succeed to find the bug. Many thanks for your precious help gentleman, Fabien. -----Message d'origine----- De : [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Envoyé : lundi 17 mars 2003 18:36 À : [EMAIL PROTECTED] Objet : Re: WSD2J: How to create a method(A a) where A is implemented either by B or C ? hi, i'm not very familiar with XML Schema, but I think you need to specify a targetnamespace for PhoneNumber and MailAddress types. mischa Neulich, etwa am Montag, 17. März 2003 16:49 meinten Fabien Guinet: > Hello, > > The goal is to define a single method which could be interpreted > differently on the server side depending on the object used (B or C). > For example, I would like to define a type UserIdentifier which could be > either a PhoneNumber or a MailAddress. I try to do this with the following > types definition: > > <xsd:element name="UserIdentifier" type="PhoneNumber, > MailAddress"/> <xsd:complexType name="PhoneNumber"> > <xsd:attribute name="PhoneNumber" type="xsd:string" > use="optional"/> > </xsd:complexType> > <xsd:complexType name="MailAddress"> > <xsd:element name="MailAddress" type="xsd:string"/> > </xsd:complexType> > > But when I'm creating my message with: > > <message name="sendRequest"> > <part name="userId" type="UserIdentifier"/> > </message> > > And when I'm running WSDL2J, I get the following error: > > java.io.IOException: Type {urn:common}PhoneNumber is referenced but not > defined. > at > org.apache.axis.wsdl.symbolTable.SymbolTable.checkForUndefined(SymbolTable. >j ava:496) > ... > > Is there an error in my type definition ? Is this the good way to reach the > targeted behaviour ? > > In advance, many thanks for your help (because I'm a little bit lost :), > > Fabien