Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » XML Schema Definition (XSD) » No targetnamespace set for local elements inside complextype
No targetnamespace set for local elements inside complextype [message #77496] Thu, 19 March 2009 11:33 Go to next message
Bhuvan Mehta is currently offline Bhuvan MehtaFriend
Messages: 58
Registered: July 2009
Member
Hello,

I have defined a complextype in an wsdl inside <types> section under
schema, as below :
------------------------------------------------------------ -----------
test.wsdl
------------------------------------------------------------ -----------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.example.org/test/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="test"
targetNamespace="http://www.example.org/test/">
<wsdl:types>
<xsd:schema targetNamespace="http://www.example.org/test/">
<xsd:complexType name="ct1">
<xsd:sequence>
<xsd:element name="ele1" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
</wsdl:definitions>
------------------------------------------------------------ -----------

Now i am using below code snippet :
------------------------------------------------------------ -----------
String sourceLoc = "C:\\test.wsdl";

File file1 = new File(sourceLoc);
final ResourceSet resourceSet = new ResourceSetImpl();
final Resource res1 =
resourceSet.getResource(URI.createURI(file1.toURI().toString ()), true);
WSDLResourceImpl wsdlr = (WSDLResourceImpl)res1;
Definition definition = wsdlr.getDefinition();
Types types = definition.getETypes();
XSDSchema schema = (XSDSchema) types.getSchemas().get(0);
XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition)
schema.getTypeDefinitions().get(0);
final XSDElementDeclaration element =
(XSDElementDeclaration)((XSDModelGroup)((XSDParticle)complex Type.getContent()).getContent()).
getContents().iterator().next().getContent();

System.out.println(element.getName());
System.out.println(element.getTargetNamespace());

------------------------------------------------------------ -----------
So now when i get the targetNamespace for ele1 which is defined in complex
type "ct1" then it is returnd as "null", where as it should be
"http://www.example.org/test/".

This case works fine when we have this schema defined in an XSD file and
process it ??

It seems there is something wrong in the "XSDSchema" which is returned by
wsdl "Definition".

--
Thanks and best regards,
Bhuvan Mehta
Re: No targetnamespace set for local elements inside complextype [message #77519 is a reply to message #77496] Thu, 19 March 2009 12:17 Go to previous message
Ed Merks is currently offline Ed MerksFriend
Messages: 33113
Registered: July 2009
Senior Member
Bhuvan,

Comments below.


Bhuvan wrote:
> Hello,
>
> I have defined a complextype in an wsdl inside <types> section under
> schema, as below :
> ------------------------------------------------------------ -----------
> test.wsdl
> ------------------------------------------------------------ -----------
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:tns="http://www.example.org/test/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="test"
> targetNamespace="http://www.example.org/test/">
> <wsdl:types>
> <xsd:schema targetNamespace="http://www.example.org/test/">
> <xsd:complexType name="ct1">
> <xsd:sequence>
> <xsd:element name="ele1" type="xsd:string"/>
> </xsd:sequence>
> </xsd:complexType>
> </xsd:schema>
> </wsdl:types>
> </wsdl:definitions>
> ------------------------------------------------------------ -----------
>
> Now i am using below code snippet :
> ------------------------------------------------------------ -----------
> String sourceLoc = "C:\\test.wsdl";
>
> File file1 = new File(sourceLoc);
> final ResourceSet resourceSet = new ResourceSetImpl();
> final Resource res1 =
> resourceSet.getResource(URI.createURI(file1.toURI().toString ()), true);
> WSDLResourceImpl wsdlr = (WSDLResourceImpl)res1;
> Definition definition = wsdlr.getDefinition();
> Types types = definition.getETypes();
> XSDSchema schema = (XSDSchema) types.getSchemas().get(0);
> XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition)
> schema.getTypeDefinitions().get(0);
> final XSDElementDeclaration element =
> (XSDElementDeclaration)((XSDModelGroup)((XSDParticle)complex Type.getContent()).getContent()).
>
>
> getContents().iterator().next().getContent();
>
> System.out.println(element.getName());
> System.out.println(element.getTargetNamespace());
>
> ------------------------------------------------------------ -----------
> So now when i get the targetNamespace for ele1 which is defined in
> complex type "ct1" then it is returnd as "null", where as it should be
> "http://www.example.org/test/".
No, local element declarations by default have form="unqualified" and
the schema itself by default has elementFormDefault="unqualified" so
unless you take explicit action to set one of these two things to
"qualified" the element will be unqualified and hence will have null
target namespace.
>
> This case works fine when we have this schema defined in an XSD file
> and process it ??
It will work the same way or are you asserting otherwise?
>
> It seems there is something wrong in the "XSDSchema" which is returned
> by wsdl "Definition".
No, I think your expectations are incorrect.
>
> --
> Thanks and best regards,
> Bhuvan Mehta
>


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: No targetnamespace set for local elements inside complextype [message #604133 is a reply to message #77496] Thu, 19 March 2009 12:17 Go to previous message
Ed Merks is currently offline Ed MerksFriend
Messages: 33113
Registered: July 2009
Senior Member
Bhuvan,

Comments below.


Bhuvan wrote:
> Hello,
>
> I have defined a complextype in an wsdl inside <types> section under
> schema, as below :
> ------------------------------------------------------------ -----------
> test.wsdl
> ------------------------------------------------------------ -----------
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:tns="http://www.example.org/test/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="test"
> targetNamespace="http://www.example.org/test/">
> <wsdl:types>
> <xsd:schema targetNamespace="http://www.example.org/test/">
> <xsd:complexType name="ct1">
> <xsd:sequence>
> <xsd:element name="ele1" type="xsd:string"/>
> </xsd:sequence>
> </xsd:complexType>
> </xsd:schema>
> </wsdl:types>
> </wsdl:definitions>
> ------------------------------------------------------------ -----------
>
> Now i am using below code snippet :
> ------------------------------------------------------------ -----------
> String sourceLoc = "C:\\test.wsdl";
>
> File file1 = new File(sourceLoc);
> final ResourceSet resourceSet = new ResourceSetImpl();
> final Resource res1 =
> resourceSet.getResource(URI.createURI(file1.toURI().toString ()), true);
> WSDLResourceImpl wsdlr = (WSDLResourceImpl)res1;
> Definition definition = wsdlr.getDefinition();
> Types types = definition.getETypes();
> XSDSchema schema = (XSDSchema) types.getSchemas().get(0);
> XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition)
> schema.getTypeDefinitions().get(0);
> final XSDElementDeclaration element =
> (XSDElementDeclaration)((XSDModelGroup)((XSDParticle)complex Type.getContent()).getContent()).
>
>
> getContents().iterator().next().getContent();
>
> System.out.println(element.getName());
> System.out.println(element.getTargetNamespace());
>
> ------------------------------------------------------------ -----------
> So now when i get the targetNamespace for ele1 which is defined in
> complex type "ct1" then it is returnd as "null", where as it should be
> "http://www.example.org/test/".
No, local element declarations by default have form="unqualified" and
the schema itself by default has elementFormDefault="unqualified" so
unless you take explicit action to set one of these two things to
"qualified" the element will be unqualified and hence will have null
target namespace.
>
> This case works fine when we have this schema defined in an XSD file
> and process it ??
It will work the same way or are you asserting otherwise?
>
> It seems there is something wrong in the "XSDSchema" which is returned
> by wsdl "Definition".
No, I think your expectations are incorrect.
>
> --
> Thanks and best regards,
> Bhuvan Mehta
>


Ed Merks
Professional Support: https://www.macromodeling.com/
Previous Topic:No targetnamespace set for local elements inside complextype
Next Topic:How to access the ID of a XSDComponent
Goto Forum:
  


Current Time: Thu Mar 28 20:27:32 GMT 2024

Powered by FUDForum. Page generated in 0.02890 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top