Home » Archived » XML Schema Definition (XSD) » finding enclosed type of soap-encoded arrays
|
Re: finding enclosed type of soap-encoded arrays [message #62793 is a reply to message #62776] |
Mon, 22 August 2005 19:49 |
Eclipse User |
|
|
|
Originally posted by: merks.ca.ibm.com
Randall,
To access the non-schema namespace attribute you are presumably
accessing the DOM, so this is really a question about how to get the
attribute value from DOM. Are you using
getAttributeNS("http://schemas.xmlsoap.org/wsdl/", "arrayType")? You'll
need to do some parsing of the attribute value, since XSD knows nothing
about the array notation used by SOAP. You'll also need to handle the
QName prefix yourself. Once you've determined the namespace and name,
you could use resolveTypeDefinition to look it up at the point of reference.
Randall Theobald wrote:
> Hi,
>
> I'm having a problem drilling down to find what the element type is of
> a declared SOAP-encoded array using the eclipse XSD APIs.
>
> Given the following schema defined in a WSDL <types> element:
>
> <schema attributeFormDefault="qualified"
> elementFormDefault="unqualified"
>
> targetNamespace="http://inventorycontrol.region.justorders.com/"
> xmlns="http://www.w3.org/2001/XMLSchema"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd1="http://inventorycontrol.region.justorders.com/">
> <import namespace="http://schemas.xmlsoap.org/wsdl/"
> schemaLocation="http://schemas.xmlsoap.org/wsdl/"/>
> <import
> namespace="http://schemas.xmlsoap.org/soap/encoding/"
> schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/>
> <complexType name="Inventory">
> <all>
> <element name="reorderLevel" nillable="true"
> type="int"/>
> <element name="status" nillable="true"
> type="string"/>
> <element name="buildingID" nillable="true"
> type="int"/>
> <element name="fullStockLevel" nillable="true"
> type="int"/>
> <element name="building_Site_RID" nillable="true"
> type="int"/>
> <element name="unitAvailable" nillable="true"
> type="int"/>
> <element name="isStock" nillable="true"
> type="string"/>
> <element name="building_SID" nillable="true"
> type="int"/>
> <element name="productID" nillable="true"
> type="string"/>
> <element name="location" nillable="true"
> type="string"/>
> <element name="unitHeld" nillable="true" type="int"/>
> </all>
> </complexType>
> <complexType name="ArrayOfInventory">
> <complexContent>
> <restriction base="soapenc:Array">
> <all/>
> <attribute ref="soapenc:arrayType"
> wsdl:arrayType="xsd1:Inventory[]"/>
> </restriction>
> </complexContent>
> </complexType>
> <complexType name="Inventories">
> <all>
> <element name="inventories" nillable="true"
> type="xsd1:ArrayOfInventory"/>
> </all>
> </complexType>
> </schema>
>
> I load the WSDL file using a ResourceSet and get a
> com.ibm.etools.wsdl.Definition.
>
> Using the Eclipse debugger, I can drill down and find the declared
> attribute "wsdl:arrayType",
> but its value is always null. I have tried using various XSD APIs,
> including calling
> XSDAttributeDeclaration.getResolvedAttributeDeclaration(), but to no
> avail.
>
> Any ideas?
>
|
|
|
Re: finding enclosed type of soap-encoded arrays [message #62810 is a reply to message #62793] |
Mon, 22 August 2005 21:49 |
Randall Theobald Messages: 34 Registered: July 2009 |
Member |
|
|
Thank you, that worked. I wasn't using the method you show below.
Seems a little counter-intuitive, though, that I can see the
attribute name without leaving the XSD classes, but not the value.
Ed Merks wrote:
> Randall,
>
> To access the non-schema namespace attribute you are presumably
> accessing the DOM, so this is really a question about how to get the
> attribute value from DOM. Are you using
> getAttributeNS("http://schemas.xmlsoap.org/wsdl/", "arrayType")? You'll
> need to do some parsing of the attribute value, since XSD knows nothing
> about the array notation used by SOAP. You'll also need to handle the
> QName prefix yourself. Once you've determined the namespace and name,
> you could use resolveTypeDefinition to look it up at the point of
> reference.
>
>
> Randall Theobald wrote:
>
>> Hi,
>>
>> I'm having a problem drilling down to find what the element type is of
>> a declared SOAP-encoded array using the eclipse XSD APIs.
>>
>> Given the following schema defined in a WSDL <types> element:
>>
>> <schema attributeFormDefault="qualified"
>> elementFormDefault="unqualified"
>>
>> targetNamespace="http://inventorycontrol.region.justorders.com/"
>> xmlns="http://www.w3.org/2001/XMLSchema"
>> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
>> xmlns:xsd1="http://inventorycontrol.region.justorders.com/">
>> <import namespace="http://schemas.xmlsoap.org/wsdl/"
>> schemaLocation="http://schemas.xmlsoap.org/wsdl/"/>
>> <import
>> namespace="http://schemas.xmlsoap.org/soap/encoding/"
>> schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/>
>> <complexType name="Inventory">
>> <all>
>> <element name="reorderLevel" nillable="true"
>> type="int"/>
>> <element name="status" nillable="true"
>> type="string"/>
>> <element name="buildingID" nillable="true"
>> type="int"/>
>> <element name="fullStockLevel" nillable="true"
>> type="int"/>
>> <element name="building_Site_RID" nillable="true"
>> type="int"/>
>> <element name="unitAvailable" nillable="true"
>> type="int"/>
>> <element name="isStock" nillable="true"
>> type="string"/>
>> <element name="building_SID" nillable="true"
>> type="int"/>
>> <element name="productID" nillable="true"
>> type="string"/>
>> <element name="location" nillable="true"
>> type="string"/>
>> <element name="unitHeld" nillable="true" type="int"/>
>> </all>
>> </complexType>
>> <complexType name="ArrayOfInventory">
>> <complexContent>
>> <restriction base="soapenc:Array">
>> <all/>
>> <attribute ref="soapenc:arrayType"
>> wsdl:arrayType="xsd1:Inventory[]"/>
>> </restriction>
>> </complexContent>
>> </complexType>
>> <complexType name="Inventories">
>> <all>
>> <element name="inventories" nillable="true"
>> type="xsd1:ArrayOfInventory"/>
>> </all>
>> </complexType>
>> </schema>
>>
>> I load the WSDL file using a ResourceSet and get a
>> com.ibm.etools.wsdl.Definition.
>>
>> Using the Eclipse debugger, I can drill down and find the declared
>> attribute "wsdl:arrayType",
>> but its value is always null. I have tried using various XSD APIs,
>> including calling
>> XSDAttributeDeclaration.getResolvedAttributeDeclaration(), but to no
>> avail.
>>
>> Any ideas?
>>
|
|
|
Re: finding enclosed type of soap-encoded arrays [message #62826 is a reply to message #62810] |
Mon, 22 August 2005 22:25 |
Eclipse User |
|
|
|
Originally posted by: merks.ca.ibm.com
Randall,
I don't think you've explained what APIs you've used, other than
resolveAttributeDeclaration, which isn't applicable for this problem.
What did you call to see the attribute name?
Note that some components have several elements, such as a complexType
with complexContent, so providing access to the DOM is necessary for
complete access to all possible non-schema namespace attributes. One
could imagine providing convenience lookup methods on the components,
but DOM provides an awful lot of such lookup methods already, and the
API is quite big already...
Randall Theobald wrote:
> Thank you, that worked. I wasn't using the method you show below.
>
> Seems a little counter-intuitive, though, that I can see the
> attribute name without leaving the XSD classes, but not the value.
>
>
> Ed Merks wrote:
>
>> Randall,
>>
>> To access the non-schema namespace attribute you are presumably
>> accessing the DOM, so this is really a question about how to get the
>> attribute value from DOM. Are you using
>> getAttributeNS("http://schemas.xmlsoap.org/wsdl/", "arrayType")?
>> You'll need to do some parsing of the attribute value, since XSD
>> knows nothing about the array notation used by SOAP. You'll also
>> need to handle the QName prefix yourself. Once you've determined the
>> namespace and name, you could use resolveTypeDefinition to look it up
>> at the point of reference.
>>
>>
>> Randall Theobald wrote:
>>
>>> Hi,
>>>
>>> I'm having a problem drilling down to find what the element type is
>>> of a declared SOAP-encoded array using the eclipse XSD APIs.
>>>
>>> Given the following schema defined in a WSDL <types> element:
>>>
>>> <schema attributeFormDefault="qualified"
>>> elementFormDefault="unqualified"
>>>
>>> targetNamespace="http://inventorycontrol.region.justorders.com/"
>>> xmlns="http://www.w3.org/2001/XMLSchema"
>>> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>>> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
>>> xmlns:xsd1="http://inventorycontrol.region.justorders.com/">
>>> <import namespace="http://schemas.xmlsoap.org/wsdl/"
>>> schemaLocation="http://schemas.xmlsoap.org/wsdl/"/>
>>> <import
>>>
>>> namespace="http://schemas.xmlsoap.org/soap/encoding/"
>>> schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/>
>>> <complexType name="Inventory">
>>> <all>
>>> <element name="reorderLevel" nillable="true"
>>> type="int"/>
>>> <element name="status" nillable="true"
>>> type="string"/>
>>> <element name="buildingID" nillable="true"
>>> type="int"/>
>>> <element name="fullStockLevel" nillable="true"
>>> type="int"/>
>>> <element name="building_Site_RID"
>>> nillable="true" type="int"/>
>>> <element name="unitAvailable" nillable="true"
>>> type="int"/>
>>> <element name="isStock" nillable="true"
>>> type="string"/>
>>> <element name="building_SID" nillable="true"
>>> type="int"/>
>>> <element name="productID" nillable="true"
>>> type="string"/>
>>> <element name="location" nillable="true"
>>> type="string"/>
>>> <element name="unitHeld" nillable="true"
>>> type="int"/>
>>> </all>
>>> </complexType>
>>> <complexType name="ArrayOfInventory">
>>> <complexContent>
>>> <restriction base="soapenc:Array">
>>> <all/>
>>> <attribute ref="soapenc:arrayType"
>>> wsdl:arrayType="xsd1:Inventory[]"/>
>>> </restriction>
>>> </complexContent>
>>> </complexType>
>>> <complexType name="Inventories">
>>> <all>
>>> <element name="inventories" nillable="true"
>>> type="xsd1:ArrayOfInventory"/>
>>> </all>
>>> </complexType>
>>> </schema>
>>>
>>> I load the WSDL file using a ResourceSet and get a
>>> com.ibm.etools.wsdl.Definition.
>>>
>>> Using the Eclipse debugger, I can drill down and find the declared
>>> attribute "wsdl:arrayType",
>>> but its value is always null. I have tried using various XSD APIs,
>>> including calling
>>> XSDAttributeDeclaration.getResolvedAttributeDeclaration(), but to no
>>> avail.
>>>
>>> Any ideas?
>>>
|
|
|
Re: finding enclosed type of soap-encoded arrays [message #596236 is a reply to message #62776] |
Mon, 22 August 2005 19:49 |
Ed Merks Messages: 33264 Registered: July 2009 |
Senior Member |
|
|
Randall,
To access the non-schema namespace attribute you are presumably
accessing the DOM, so this is really a question about how to get the
attribute value from DOM. Are you using
getAttributeNS("http://schemas.xmlsoap.org/wsdl/", "arrayType")? You'll
need to do some parsing of the attribute value, since XSD knows nothing
about the array notation used by SOAP. You'll also need to handle the
QName prefix yourself. Once you've determined the namespace and name,
you could use resolveTypeDefinition to look it up at the point of reference.
Randall Theobald wrote:
> Hi,
>
> I'm having a problem drilling down to find what the element type is of
> a declared SOAP-encoded array using the eclipse XSD APIs.
>
> Given the following schema defined in a WSDL <types> element:
>
> <schema attributeFormDefault="qualified"
> elementFormDefault="unqualified"
>
> targetNamespace="http://inventorycontrol.region.justorders.com/"
> xmlns="http://www.w3.org/2001/XMLSchema"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd1="http://inventorycontrol.region.justorders.com/">
> <import namespace="http://schemas.xmlsoap.org/wsdl/"
> schemaLocation="http://schemas.xmlsoap.org/wsdl/"/>
> <import
> namespace="http://schemas.xmlsoap.org/soap/encoding/"
> schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/>
> <complexType name="Inventory">
> <all>
> <element name="reorderLevel" nillable="true"
> type="int"/>
> <element name="status" nillable="true"
> type="string"/>
> <element name="buildingID" nillable="true"
> type="int"/>
> <element name="fullStockLevel" nillable="true"
> type="int"/>
> <element name="building_Site_RID" nillable="true"
> type="int"/>
> <element name="unitAvailable" nillable="true"
> type="int"/>
> <element name="isStock" nillable="true"
> type="string"/>
> <element name="building_SID" nillable="true"
> type="int"/>
> <element name="productID" nillable="true"
> type="string"/>
> <element name="location" nillable="true"
> type="string"/>
> <element name="unitHeld" nillable="true" type="int"/>
> </all>
> </complexType>
> <complexType name="ArrayOfInventory">
> <complexContent>
> <restriction base="soapenc:Array">
> <all/>
> <attribute ref="soapenc:arrayType"
> wsdl:arrayType="xsd1:Inventory[]"/>
> </restriction>
> </complexContent>
> </complexType>
> <complexType name="Inventories">
> <all>
> <element name="inventories" nillable="true"
> type="xsd1:ArrayOfInventory"/>
> </all>
> </complexType>
> </schema>
>
> I load the WSDL file using a ResourceSet and get a
> com.ibm.etools.wsdl.Definition.
>
> Using the Eclipse debugger, I can drill down and find the declared
> attribute "wsdl:arrayType",
> but its value is always null. I have tried using various XSD APIs,
> including calling
> XSDAttributeDeclaration.getResolvedAttributeDeclaration(), but to no
> avail.
>
> Any ideas?
>
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Re: finding enclosed type of soap-encoded arrays [message #596243 is a reply to message #62793] |
Mon, 22 August 2005 21:49 |
Randall Theobald Messages: 34 Registered: July 2009 |
Member |
|
|
Thank you, that worked. I wasn't using the method you show below.
Seems a little counter-intuitive, though, that I can see the
attribute name without leaving the XSD classes, but not the value.
Ed Merks wrote:
> Randall,
>
> To access the non-schema namespace attribute you are presumably
> accessing the DOM, so this is really a question about how to get the
> attribute value from DOM. Are you using
> getAttributeNS("http://schemas.xmlsoap.org/wsdl/", "arrayType")? You'll
> need to do some parsing of the attribute value, since XSD knows nothing
> about the array notation used by SOAP. You'll also need to handle the
> QName prefix yourself. Once you've determined the namespace and name,
> you could use resolveTypeDefinition to look it up at the point of
> reference.
>
>
> Randall Theobald wrote:
>
>> Hi,
>>
>> I'm having a problem drilling down to find what the element type is of
>> a declared SOAP-encoded array using the eclipse XSD APIs.
>>
>> Given the following schema defined in a WSDL <types> element:
>>
>> <schema attributeFormDefault="qualified"
>> elementFormDefault="unqualified"
>>
>> targetNamespace="http://inventorycontrol.region.justorders.com/"
>> xmlns="http://www.w3.org/2001/XMLSchema"
>> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
>> xmlns:xsd1="http://inventorycontrol.region.justorders.com/">
>> <import namespace="http://schemas.xmlsoap.org/wsdl/"
>> schemaLocation="http://schemas.xmlsoap.org/wsdl/"/>
>> <import
>> namespace="http://schemas.xmlsoap.org/soap/encoding/"
>> schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/>
>> <complexType name="Inventory">
>> <all>
>> <element name="reorderLevel" nillable="true"
>> type="int"/>
>> <element name="status" nillable="true"
>> type="string"/>
>> <element name="buildingID" nillable="true"
>> type="int"/>
>> <element name="fullStockLevel" nillable="true"
>> type="int"/>
>> <element name="building_Site_RID" nillable="true"
>> type="int"/>
>> <element name="unitAvailable" nillable="true"
>> type="int"/>
>> <element name="isStock" nillable="true"
>> type="string"/>
>> <element name="building_SID" nillable="true"
>> type="int"/>
>> <element name="productID" nillable="true"
>> type="string"/>
>> <element name="location" nillable="true"
>> type="string"/>
>> <element name="unitHeld" nillable="true" type="int"/>
>> </all>
>> </complexType>
>> <complexType name="ArrayOfInventory">
>> <complexContent>
>> <restriction base="soapenc:Array">
>> <all/>
>> <attribute ref="soapenc:arrayType"
>> wsdl:arrayType="xsd1:Inventory[]"/>
>> </restriction>
>> </complexContent>
>> </complexType>
>> <complexType name="Inventories">
>> <all>
>> <element name="inventories" nillable="true"
>> type="xsd1:ArrayOfInventory"/>
>> </all>
>> </complexType>
>> </schema>
>>
>> I load the WSDL file using a ResourceSet and get a
>> com.ibm.etools.wsdl.Definition.
>>
>> Using the Eclipse debugger, I can drill down and find the declared
>> attribute "wsdl:arrayType",
>> but its value is always null. I have tried using various XSD APIs,
>> including calling
>> XSDAttributeDeclaration.getResolvedAttributeDeclaration(), but to no
>> avail.
>>
>> Any ideas?
>>
|
|
|
Re: finding enclosed type of soap-encoded arrays [message #596254 is a reply to message #62810] |
Mon, 22 August 2005 22:25 |
Ed Merks Messages: 33264 Registered: July 2009 |
Senior Member |
|
|
Randall,
I don't think you've explained what APIs you've used, other than
resolveAttributeDeclaration, which isn't applicable for this problem.
What did you call to see the attribute name?
Note that some components have several elements, such as a complexType
with complexContent, so providing access to the DOM is necessary for
complete access to all possible non-schema namespace attributes. One
could imagine providing convenience lookup methods on the components,
but DOM provides an awful lot of such lookup methods already, and the
API is quite big already...
Randall Theobald wrote:
> Thank you, that worked. I wasn't using the method you show below.
>
> Seems a little counter-intuitive, though, that I can see the
> attribute name without leaving the XSD classes, but not the value.
>
>
> Ed Merks wrote:
>
>> Randall,
>>
>> To access the non-schema namespace attribute you are presumably
>> accessing the DOM, so this is really a question about how to get the
>> attribute value from DOM. Are you using
>> getAttributeNS("http://schemas.xmlsoap.org/wsdl/", "arrayType")?
>> You'll need to do some parsing of the attribute value, since XSD
>> knows nothing about the array notation used by SOAP. You'll also
>> need to handle the QName prefix yourself. Once you've determined the
>> namespace and name, you could use resolveTypeDefinition to look it up
>> at the point of reference.
>>
>>
>> Randall Theobald wrote:
>>
>>> Hi,
>>>
>>> I'm having a problem drilling down to find what the element type is
>>> of a declared SOAP-encoded array using the eclipse XSD APIs.
>>>
>>> Given the following schema defined in a WSDL <types> element:
>>>
>>> <schema attributeFormDefault="qualified"
>>> elementFormDefault="unqualified"
>>>
>>> targetNamespace="http://inventorycontrol.region.justorders.com/"
>>> xmlns="http://www.w3.org/2001/XMLSchema"
>>> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>>> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
>>> xmlns:xsd1="http://inventorycontrol.region.justorders.com/">
>>> <import namespace="http://schemas.xmlsoap.org/wsdl/"
>>> schemaLocation="http://schemas.xmlsoap.org/wsdl/"/>
>>> <import
>>>
>>> namespace="http://schemas.xmlsoap.org/soap/encoding/"
>>> schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/>
>>> <complexType name="Inventory">
>>> <all>
>>> <element name="reorderLevel" nillable="true"
>>> type="int"/>
>>> <element name="status" nillable="true"
>>> type="string"/>
>>> <element name="buildingID" nillable="true"
>>> type="int"/>
>>> <element name="fullStockLevel" nillable="true"
>>> type="int"/>
>>> <element name="building_Site_RID"
>>> nillable="true" type="int"/>
>>> <element name="unitAvailable" nillable="true"
>>> type="int"/>
>>> <element name="isStock" nillable="true"
>>> type="string"/>
>>> <element name="building_SID" nillable="true"
>>> type="int"/>
>>> <element name="productID" nillable="true"
>>> type="string"/>
>>> <element name="location" nillable="true"
>>> type="string"/>
>>> <element name="unitHeld" nillable="true"
>>> type="int"/>
>>> </all>
>>> </complexType>
>>> <complexType name="ArrayOfInventory">
>>> <complexContent>
>>> <restriction base="soapenc:Array">
>>> <all/>
>>> <attribute ref="soapenc:arrayType"
>>> wsdl:arrayType="xsd1:Inventory[]"/>
>>> </restriction>
>>> </complexContent>
>>> </complexType>
>>> <complexType name="Inventories">
>>> <all>
>>> <element name="inventories" nillable="true"
>>> type="xsd1:ArrayOfInventory"/>
>>> </all>
>>> </complexType>
>>> </schema>
>>>
>>> I load the WSDL file using a ResourceSet and get a
>>> com.ibm.etools.wsdl.Definition.
>>>
>>> Using the Eclipse debugger, I can drill down and find the declared
>>> attribute "wsdl:arrayType",
>>> but its value is always null. I have tried using various XSD APIs,
>>> including calling
>>> XSDAttributeDeclaration.getResolvedAttributeDeclaration(), but to no
>>> avail.
>>>
>>> Any ideas?
>>>
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Goto Forum:
Current Time: Sun Dec 22 05:57:13 GMT 2024
Powered by FUDForum. Page generated in 0.04177 seconds
|