Different Element Names

I think the solution to my problem is very easy, but i couldn't fint it :(
So, here is:
I have an XML which have a list of elements with different names, but in sequence.
An example:
<DOC>
<DOC_OBL_1>
  <TIP_DOC_OBL>1</TIP_DOC_OBL>
</DOC_OBL_1>
<DOC_OBL_2>
  <TIP_DOC_OBL>2</TIP_DOC_OBL>
  </DOC_OBL_2>
<DOC_OBL_3>
  <TIP_DOC_OBL>3</TIP_DOC_OBL> 
</DOC_OBL_3>
</DOC>So, i have 3 elements: DOC_OBL_1, DOC_OBL_2 and DOC_OBL_3. And yes, there could be number 4, 5, 6, etc.
As you can se, all 3 have the same elements inside(actually, they have a lot of them, but arent important righ now), and I thinked i could declare a general type which could validate this kind of documents.
How can i validate this with an Schema???
I know its a very ugly XML (maybe it isnt standard, please tell me, i dont know), but It's not my concern to build this document. I just have to parse it, validate it and transform it.
You can just link to the solution, any help will be wellcome.

Ok, thank you all.
I've done this, finally:
  <xsd:element name="DOC_OBL">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="DOC_OBL_1" type="DocOBLType" minOccurs="1" />
        <xsd:element name="DOC_OBL_2" type="DocOBLType" minOccurs="0" />
        <xsd:element name="DOC_OBL_3" type="DocOBLType" minOccurs="0" />
        <xsd:element name="DOC_OBL_4" type="DocOBLType" minOccurs="0" />
        <xsd:element name="DOC_OBL_5" type="DocOBLType" minOccurs="0" />
        <xsd:element name="DOC_OBL_6" type="DocOBLType" minOccurs="0" />
        <xsd:element name="DOC_OBL_7" type="DocOBLType" minOccurs="0" />
        <xsd:element name="DOC_OBL_8" type="DocOBLType" minOccurs="0" />
        <xsd:element name="DOC_OBL_9" type="DocOBLType" minOccurs="0" />
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>with this:
  <xsd:complexType name="DocOBLType">
    <xsd:sequence>
      //elements..
    </xsd:sequence>
  </xsd:complexType>It works, for now. ^^
(No, no, no.. i cant change the document formart, its not my concern!!)

Similar Messages

  • Compiler issue when different case element names

    Hi
    Given this simple schema where two elements with the same name but a different case exist causes problems with the generated code.
    <?xml version="1.0"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="test">
    <xsd:complexType mixed="false">
    <xsd:sequence>
    <xsd:element ref="TEST" minOccurs="1" maxOccurs="unbounded"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    <xsd:element name="TEST">
    <xsd:complexType mixed="false">
    <xsd:sequence>
    <xsd:element name="data" type="xsd:string"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    The compiler only generates class files for one of the Test elements, but refers to both (test and TEST) in the ObjectFactory class for example -> therefore I get compiler errors. Is there a way around this (e.g. bindings) without changing the schema.
    Thankyou
    AB

    Looking at the compiler output, it says it has generated the conflicting classes (e.g. TEST.java and Test.java), but when I look in the directory, only Test.java is there. I am assuming this may be a MS Windows problem. I am running this on Windows 2000 and the first file may be overwriting the second file - just a thought.
    If I can get hold of a UNIX box I will give it another go.
    AB

  • Xslt: mapping different elements onto instances of an unbounded element

    How can you map different elements onto sequential elements of an unbounded type? For example:
    <record>
    <tag1>abc</tag1>
    <tag2>def</tag2>
    <tag3>ghi</tag3>
    </record>
    onto
    <properties>
    <property name="tag1" seq="1">abc</property>
    <property name="tag2" seq="2">def</property>
    <property name="tag3" seq="3">ghi</property>
    </properties>
    The mapping onto the first property will always be from tag1, etc. However, in the schema for <properties>, <property> only appears once:
    <xsd:element name="property" type="NormalizedString" minOccurs="0" maxOccurs="unbounded">
    Can this be mapped using JDeveloper? Can it be mapped by hand?
    If so, how?
    Thanks!

    Hello user,
    I think you will have to do this manually. It's been way too long since I was doing any serious XSLT hacking, and I don't have your schemas, but this may give you a starting point for your transformation;
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet version="1.0"
    xmlns:xref="http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions"
    xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
    xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:ora="http://schemas.oracle.com/xpath/extension"
    xmlns:ehdr="http://www.oracle.com/XSL/Transform/java/oracle.tip.esb.server.headers.ESBHeaderFunctions"
    xmlns:ns0="http://www.w3.org/2001/XMLSchema"
    xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"
    xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath"
    xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath"
    xmlns:ns1="http://xmlns.oracle.com/Transformation"
    exclude-result-prefixes="xsl ns0 ns1 xref xp20 bpws ora ehdr orcl ids hwf">
    <xsl:template match="/ns1:TransformationProcessRequest/ns1:record">
    <xsl:for-each select="*">
    <xsl:element name="ns1:property">
    <xsl:attribute name="name"><xsl:value-of select="name()"/></xsl:attribute>
    <xsl:attribute name="seq"><xsl:value-of select="position()"/></xsl:attribute>
    <xsl:value-of select="current()"/>
    </xsl:element>
    </xsl:for-each>
    </xsl:template>
    <xsl:template match="/ns1:TransformationProcessRequest">
    <ns1:properties>
    <xsl:apply-templates select="/ns1:TransformationProcessRequest/ns1:record"/>
    </ns1:properties>
    </xsl:template>
    <xsl:template match="/">
    <ns1:TransformationProcessResponse>
    <xsl:apply-templates select="/ns1:TransformationProcessRequest"/>
    </ns1:TransformationProcessResponse>
    </xsl:template>
    </xsl:stylesheet>
    Regarding validation to XSD, I guess that's just a matter of specifying the right namespaces and elements...?
    Regards,
    Rune

  • Unexpected element name - confusion of types in client

    I have a web service definition that performs four operations:
    - String getTitle(long) - returns a title for a single asset
    - StringArrayType) getTitles(LongArrayType) - returns an ordered list of titles matching input list
    - AssetSummaryType getSummary(long) - Returns a complex type, summary information of an asset
    - AssetSummaryArrayType getSummaries(LongArrayType) - Returns an array of complex types
    Based on the WSDL (included at the bottom of this posting) I then generate the service
    endpoint using wscompile and -f:wsi option (JDK 1.4.2-05 and JWSDP-1.4).
    This is built into a raw war file and then cooked using wsdeploy.
    On the client side I create stubs using wscompile and -f:wsi and compile
    the resultant code. My client invokes each of the operations in turn, having been
    provided the relevant 'longs' as input.
    The service is deployed in JBoss-3.2.2 and the client is then executed from a separate JVM.
    I then see the following client error:
    java.rmi.RemoteException: Runtime exception; nested exception is:
    unexpected element name: expected={http://example.com/myAssetWebSvc}Str
    ingElement, actual={http://example.com/MyAssetWebSvc}AssetSummaryElement
    at com.sun.xml.rpc.client.StreamingSender._handleRuntimeExceptionInSend(
    StreamingSender.java:318)
    at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:300
    at example.com.wsclient.asset.AssetService_Stub.getTitle(AssetService_St
    ub.java:175)
    at example.com.wsclient.asset.AssetClient.testAssetTitleRetrieval(AssetC
    lient.java:82)
    at example.com.wsclient.asset.AssetClient.main(AssetClient.java:51)
    Caused by: unexpected element name: expected={http://example.com/MyAssetWebSvc}
    StringElement, actual={http://example.com/MyAssetWebSvc}AssetSummaryElement
    at com.sun.xml.rpc.encoding.literal.LiteralSimpleTypeSerializer.deserial
    ize(LiteralSimpleTypeSerializer.java:106)
    at example.com.wsclient.asset.AssetService_Stub._deserialize_getTitle(As
    setService_Stub.java:318)
    at example.com.wsclient.asset.AssetService_Stub._readFirstBodyElement(As
    setService_Stub.java:276)
    at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:215
    ... 3 more
    If I deploy the same service with only the first two operations defined within wsdl,
    the error is not seen.
    I have also tried compilation on JWSDP 1.3 and JDK 1.4.1-03 and in this case the same error
    occurs but the other way around. The two 'title' operations work but the summary
    operations fail with the actual element encountered being a StringElement or StringArrayElement
    and the expected an AssetSummaryElement or AssetSummaryArrayElement.
    Further, if I change the name of the StringElement to for example 'MyStringElement', this is
    reported as the actual - i.e. there is no confusion with a standard type at play here.
    I also use handlers, one on the server side to inspect security information and one on the
    client to insert relevant details and look for returned errors within the header.
    Is this a known problem within JWSDP 1.3 and/or 1.4? Are there any workarounds.
    My wsdl is provided below along with the wscompile options and the matching configuration
    files used.
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions name="MyAssetService" targetNamespace="http://example.com/MyAssetWebSvc"
         xmlns:tns="http://example.com/MyAssetWebSvc"
         xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
         xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
    <wsdl:types>
    <xsd:schema targetNamespace="http://example.com/MyAssetWebSvc"
              xmlns:tns="http://example.com/MyAssetWebSvc"
              xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:complexType name="AssetSummaryType">
    <xsd:all>
    <xsd:element name="createdBy" type="xsd:string" />
    <xsd:element name="createdDate" type="xsd:dateTime" />
    <xsd:element name="description" type="xsd:string" />
    <xsd:element name="fileSize" type="xsd:long" />
    <xsd:element name="id" type="xsd:long" />
    <xsd:element name="modifiedBy" type="xsd:string" />
    <xsd:element name="modifiedDate" type="xsd:dateTime" />
    <xsd:element name="organisation" type="xsd:string" />
    <xsd:element name="owner" type="xsd:string" />
    <xsd:element name="title" type="xsd:string" />
    <xsd:element name="type" type="xsd:string" />
    <xsd:element name="version" type="xsd:long" />
    </xsd:all>
    </xsd:complexType>
    <xsd:complexType name="ExceptionType">
    <xsd:all>
    <xsd:element name="rootCause" type="xsd:string" nillable="true" />
    </xsd:all>
    </xsd:complexType>
    <xsd:complexType name="LongArrayType">
         <xsd:sequence>
              <xsd:element name="LongItem" type="xsd:long" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
         </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="AssetSummaryArrayType">
         <xsd:sequence>
              <xsd:element name="AssetSummaryItem" type="tns:AssetSummaryType" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
         </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="StringArrayType">
         <xsd:sequence>
              <xsd:element name="StringItem" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
         </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="CredentialsType">
    <xsd:all>
    <xsd:element name="principal" type="xsd:string" />
    <xsd:element name="password" type="xsd:string" />
    </xsd:all>
    </xsd:complexType>
         <xsd:element name="LongElement" type="xsd:long"/>
    <xsd:element name="StringElement" type="xsd:string"/>
    <xsd:element name="LongArrayElement" type="tns:LongArrayType"/>
    <xsd:element name="StringArrayElement" type="tns:StringArrayType"/>
    <xsd:element name="AssetSummaryElement" type="tns:AssetSummaryType"/>
    <xsd:element name="AssetSummaryArrayElement" type="tns:AssetSummaryArrayType"/>
         <xsd:element name="CredentialsElement" type="tns:CredentialsType"/>
         <xsd:element name="ExceptionElement" type="tns:ExceptionType"/>
    </xsd:schema>
    </wsdl:types>
    <wsdl:message name="getSummaryMessage">
    <wsdl:part name="resourceId" element="tns:LongElement" />
    </wsdl:message>
    <wsdl:message name="getSummaryResponse">
    <wsdl:part name="assetSummary" element="tns:AssetSummaryElement" />
    </wsdl:message>
    <wsdl:message name="assetException">
    <wsdl:part name="exception" element="tns:ExceptionElement" />
    </wsdl:message>
    <wsdl:message name="getTitle">
    <wsdl:part name="resourceId" element="tns:LongElement" />
    </wsdl:message>
    <wsdl:message name="getTitleResponse">
    <wsdl:part name="assetTitle" element="tns:StringElement" />
    </wsdl:message>
    <wsdl:message name="getSummaries">
    <wsdl:part name="resourceIdList" element="tns:LongArrayElement" />
    </wsdl:message>
    <wsdl:message name="getSummariesResponse">
    <wsdl:part name="assetSummaryList" element="tns:AssetSummaryArrayElement" />
    </wsdl:message>
    <wsdl:message name="getTitles">
    <wsdl:part name="resourceIdList" element="tns:LongArrayElement" />
    </wsdl:message>
    <wsdl:message name="getTitlesResponse">
    <wsdl:part name="assetTitleList" element="tns:StringArrayElement" />
    </wsdl:message>
    <wsdl:message name="securityHeader">
    <wsdl:part name="credentials" element="tns:CredentialsElement" />
    </wsdl:message>
    <wsdl:portType name="AssetService">
    <wsdl:operation name="getSummary" parameterOrder="resourceId">
    <wsdl:input message="tns:getSummaryMessage" />
    <wsdl:output message="tns:getSummaryResponse" />
    <wsdl:fault name="AssetException" message="tns:assetException" />
    </wsdl:operation>
    <wsdl:operation name="getTitle" parameterOrder="resourceId">
    <wsdl:input message="tns:getTitle" />
    <wsdl:output message="tns:getTitleResponse" />
    <wsdl:fault name="AssetException" message="tns:assetException" />
    </wsdl:operation>
    <wsdl:operation name="getSummaries" parameterOrder="resourceIdList">
    <wsdl:input message="tns:getSummaries" />
    <wsdl:output message="tns:getSummariesResponse" />
    <wsdl:fault name="AssetException" message="tns:assetException" />
    </wsdl:operation>
    <wsdl:operation name="getTitles" parameterOrder="resourceIdList">
    <wsdl:input message="tns:getTitles" />
    <wsdl:output message="tns:getTitlesResponse" />
    <wsdl:fault name="AssetException" message="tns:assetException" />
    </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="AssetServiceBinding" type="tns:AssetService">
    <wsdl:operation name="getSummary">
    <wsdl:input>
    <soap:header required="true" message="tns:securityHeader" part="credentials" use="literal" actor="security"/>
    <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
    <soap:body use="literal"/>
    </wsdl:output>
    <wsdl:fault name="AssetException">
    <soap:fault name="AssetException" use="literal"/>
    </wsdl:fault>
    <soap:operation soapAction="" />
    </wsdl:operation>
    <wsdl:operation name="getTitle">
    <wsdl:input>
    <soap:header required="true" message="tns:securityHeader" part="credentials" use="literal"/>
    <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
    <soap:body use="literal"/>
    </wsdl:output>
    <wsdl:fault name="AssetException">
    <soap:fault name="AssetException" use="literal"/>
    </wsdl:fault>
    <soap:operation soapAction="" />
    </wsdl:operation>
    <wsdl:operation name="getSummaries">
    <wsdl:input>
    <soap:header required="true" message="tns:securityHeader" part="credentials" use="literal"/>
    <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
    <soap:body use="literal"/>
    </wsdl:output>
    <wsdl:fault name="AssetException">
    <soap:fault name="AssetException" use="literal"/>
    </wsdl:fault>
    <soap:operation soapAction="" />
    </wsdl:operation>
    <wsdl:operation name="getTitles">
    <wsdl:input>
    <soap:header required="true" message="tns:securityHeader" part="credentials" use="literal"/>
    <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
    <soap:body use="literal"/>
    </wsdl:output>
    <wsdl:fault name="AssetException">
    <soap:fault name="AssetException" use="literal"/>
    </wsdl:fault>
    <soap:operation soapAction="" />
    </wsdl:operation>
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
    </wsdl:binding>
    <wsdl:service name="MyAssetService">
    <wsdl:port name="AssetServicePort" binding="tns:AssetServiceBinding">
    <soap:address location="http://localhost:9090/MyAssetWebSvc/asset" />
    </wsdl:port>
    </wsdl:service>
    </wsdl:definitions>
    Here is the wscompile for the server - this is within an ant script that substitutes the variables specified:
    wscompile -keep -d ${path.classes} -s ${src.autojava} -import -model model.gz -f:wsi -f:documentliteral server-config.xml
    and this is the server config:
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
    <wsdl location="file:///C:temp/MyAssetService_wsi.wsdl" packageName="example.com.wsserver.asset.wrapper">
    <handlerChains>
    <chain runAt="server">
    <handler className="example.com.wsserver.security.SecurityServerHandler">
    <property name="name" value="SecurityServerHandler"/>
    </handler>
    </chain>
    </handlerChains>
    </wsdl>
    </configuration>
    On the client side, here is the wscompile, again with ant variable substitution:
    wscompile -gen:client -keep -d ${path.build.wsclient.class} -s ${path.build.wsclient.autojava} -classpath ${path.build.wsclient.class} -f:wsi -f:documentliteral client-config.xml
    And here is the client config:
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
    <wsdl location="file:///C:/temp/MyAssetService_wsi.wsdl" packageName="example.com.wsclient.asset">
    <handlerChains>
    <chain runAt="client">
    <handler className="example.com.wsclient.security.SecurityClientHandler">
    <property name="name" value="SecurityClientHandler"/>
    </handler>
    </chain>
    </handlerChains>
    </wsdl>
    </configuration>
    Note that I generate slightly different packages on client and server side. The server includes a 'wrapper' path on the package name - purely because the
    generated code wrappers an existent api that I am making available as a web service. This is not needed to be seen
    on the client side - i.e. the service appears as is without the wrapper.
    I have tried omitting the documentliteral from the wscompiles and this seems to have no effect.
    Any help gratefully received.
    Best regards
    Lawrence

    Thanks for the prompting. I was convinced that the error was occurring client side as I could see no activity on the server. However having captured the soap request and responses its evident that this is not the case (which I'm a little confused on based on my original tests, but the error makes more sense in this context).
    The request is below:
    <env:Envelope xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://example.com/myAssetWebSvc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <env:Header>
    <ns1:mmsSecurity env:actor="security" env:mustUnderstand="1" xmlns:ns1="http://example.com/myAssetWebSvc">
    <principal>example.user</principal>
    <password>mypassword</password>
    </ns1:mmsSecurity>
    </env:Header>
    <env:Body>
    <ns0:LongElement>166333</ns0:LongElement>
    </env:Body>
    </env:Envelope>
    I can see from the body that the signature is not unique - its the same as that of the Summary operation. In this case, the server side is performing the summary (rather than the title that I had intended) and returning that response. This gives rise to the deserialisation error on the client side for the response.
    Presumably I need to move to the wrapped document literal style so that the request is uniquely identified on the server side.
    To me this was not an obvious gotcha, Could the parser (wscompile) be enhanced to trap identical request message definitions within a single service/endpoint definition (i.e. WSDL)? If so where should I post the request?

  • Use enum or subclassing to differentiate between different elements?

    Hello all,
    I have a design decision to make.
    I have two different Elements with everything the same except the name.
    So I have two ideas on how this can be solved.
    1. Through subclassing.
    2. Through enumeration.
    I have tried to make two examples of this so you can recommend 1 or 2 only on a conceptual level not implementation.
    Sub classing
    public class Element {
         //Methods     
    public class A extends Element {
         //Nothing
    public class B extends Element {
         //Nothing
    public class Main {
         public static void main(String[] args) {
              Element elm = new A();
              if (elm instanceof A){}
              else if (elm instanceof B){}
    }Enumeration
    public class Element {
         public enum Type {A, B}
         private Type type;
         public Element(Type type) {
              this.type = type;
         public Type getType() {
              return type;
         //Methods
    public class Main {
         public static void main(String[] args) {
              Element elm = new Element(Type.A);
              switch(elm.getType()) {
                   case A:
                   case B:
    }Thanks /Farmor
    Edited by: Farmor on Dec 15, 2009 3:14 PM (Spelling error)

    Thanks for the answers.
    Then I will go with the enum solution that will give me a lot of free things.
    Such as I can limit the API user to only choose between my predefined values and the use of my API will be much easier when used in a good IDE.
    /Farmor

  • Unexpected element name: expected WHEN INVOKING A WEB SERVICE

    I am pretty new to Web Services and need some helping in resolving the following error. I created following two classes and published one of the method savePerson. When I tried to invoke the webservice through my browser passing the following:
    <ns1:savePersonElement xmlns:ns1="http://mypackage17/Person.wsdl/types">
    <ns1:sex>simpleType value</ns1:sex>
    <ns1:human>
    <ns2:last xmlns:ns2="http://tempuri.org">simpleType value</ns2:last>
    <ns3:first xmlns:ns3="http://tempuri.org">simpleType value</ns3:first>
    </ns1:human>
    </ns1:savePersonElement>
    I get the following error:
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://mypackage17/Person.wsdl/types">
    <env:Body>
    <env:Fault>
    <faultcode>env:Client</faultcode>
    <faultstring>caught exception while handling request: unexpected element name: expected={http://mypackage17/Person.wsdl/types}name, actual={http://mypackage17/Person.wsdl/types}sex</faultstring>
    </env:Fault>
    </env:Body>
    </env:Envelope>
    But passing the following works fine as have passed all the parameters data:
    <ns1:savePersonElement xmlns:ns1="http://mypackage17/Person.wsdl/types">
    <ns1:name>simpleType value</ns1:name>
    <ns1:sex>simpleType value</ns1:sex>
    <ns1:human>
    <ns2:last xmlns:ns2="http://tempuri.org">simpleType value</ns2:last>
    <ns3:first xmlns:ns3="http://tempuri.org">simpleType value</ns3:first>
    </ns1:human>
    </ns1:savePersonElement>
    Here is the code I have for the webservice:
    package mypackage17;
    *@oracle.ws.WebService name = "MyWebService2", serviceName = "MyWebService2", description = "", targetNamespace = "http://tempuri.org", schemaTargetNamespace = "http://mypackage17/Person.wsdl/types", endpointInterface = "mypackage17.MyWebService1SEI"
    *@oracle.ws.SOAPBinding style = "DOCUMENT", use = "LITERAL", documentWrapped = "true", bindingName = "MyWebService1SoapHttp", portName = "MyWebService1Port"
    public class Person extends Human
    private String name;
    private String sex;
    public Person(){}
    public void setName(String name)
    this.name = name;
    public void setSex(String sex)
    this.sex = sex;
    public String getName()
    return this.name;
    public String getSex()
    return this.sex;
    *@oracle.ws.DocumentWrapper requestType = "savePerson", requestElement = "savePersonElement", requestPart = "parameters", responseType = "savePersonResponse", responseElement = "savePersonResponseElement", responsePart = "parameters"
    *@oracle.ws.WebMethod operationName = "savePerson", description = "", oneway = "false", documentWrapped = "true", inputMessage = "MyWebService1SEI_savePerson", outputMessage = "MyWebService1SEI_savePersonResponse", responsePart = "result"
    *@oracle.ws.ParamPart position = "0", partName = "name", mode = "IN", soapHeader = "false"
    *@oracle.ws.ParamPart position = "1", partName = "sex", mode = "IN", soapHeader = "false"
    *@oracle.ws.ParamPart position = "2", partName = "human", mode = "IN", soapHeader = "false"
    public void savePerson(String name, String sex, Human[] human)
    System.out.println("Name: " + name);
    System.out.println("Sex: " + sex);
    System.out.println(human.length);
    System.out.println("1 First: " + human[0].getFirst());
    System.out.println("1 Last: " + human[0].getLast());
    System.out.println("2 First: " + human[1].getFirst());
    System.out.println("2 Last: " + human[1].getLast());
    /****** THE OTHER CLASS ********/
    package mypackage17;
    public class Human
    private String first;
    private String last;
    public Human(){}
    public void setFirst(String first)
    this.first = first;
    public void setLast(String last)
    this.last = last;
    public String getFirst()
    return this.first;
    public String getLast()
    return this.last;
    Here is the WSDL generated using JDeveloper 10.1.3:
    <?xml version="1.0" encoding="UTF-8" ?>
    <definitions
    name="MyWebService2"
    targetNamespace="http://tempuri.org"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:tns="http://tempuri.org"
    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
    xmlns:ns1="http://mypackage17/Person.wsdl/types"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    >
    <types>
    <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://tempuri.org" elementFormDefault="qualified"
    xmlns:tns="http://tempuri.org" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/">
    <import namespace="http://mypackage17/Person.wsdl/types"/>
    <complexType name="Human">
    <sequence>
    <element name="last" type="string" nillable="true"/>
    <element name="first" type="string" nillable="true"/>
    </sequence>
    </complexType>
    </schema>
    <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://mypackage17/Person.wsdl/types"
    elementFormDefault="qualified" xmlns:tns="http://mypackage17/Person.wsdl/types"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://tempuri.org">
    <import namespace="http://tempuri.org"/>
    <complexType name="savePerson">
    <sequence>
    <element name="name" type="string" nillable="true"/>
    <element name="sex" type="string" nillable="true"/>
    <element name="human" type="ns1:Human" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    </complexType>
    <complexType name="savePersonResponse">
    <sequence/>
    </complexType>
    <element name="savePersonElement" type="tns:savePerson"/>
    <element name="savePersonResponseElement" type="tns:savePersonResponse"/>
    </schema>
    </types>
    <message name="MyWebService1SEI_savePerson">
    <part name="parameters" element="ns1:savePersonElement"/>
    </message>
    <message name="MyWebService1SEI_savePersonResponse">
    <part name="parameters" element="ns1:savePersonResponseElement"/>
    </message>
    <portType name="MyWebService2">
    <operation name="savePerson">
    <input message="tns:MyWebService1SEI_savePerson"/>
    <output message="tns:MyWebService1SEI_savePersonResponse"/>
    </operation>
    </portType>
    <binding name="MyWebService1SoapHttp" type="tns:MyWebService2">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="savePerson">
    <soap:operation soapAction="http://tempuri.org:savePerson"/>
    <input>
    <soap:body use="literal" parts="parameters"/>
    </input>
    <output>
    <soap:body use="literal" parts="parameters"/>
    </output>
    </operation>
    </binding>
    <service name="MyWebService2">
    <port name="MyWebService1Port" binding="tns:MyWebService1SoapHttp">
    <soap:address location="http://192.168.2.101:8988/JavaWebService/MyWebService2"/>
    </port>
    </service>
    </definitions>
    Can someone tell what am I doing wrong. As it looks like I have to pass all the parameters for the method that is published but what if some are missing basically I want to keep all the parameters optional. How can I make the service to return the same what is passed when invoked. Any help is appreciated. I am using JDeveloper 10.1.3.

    To make the service return "whatever is passed", you have to take a step back and realize that there is a little understanding of XML Schema required.
    When using a complexType, which is defined as a sequence, then you are implying an ordered sequence of elements. Default value for the 'minOccurs' attribute is 1. It's also important to understand that there is a difference between minOccurs=0 and nillable="true".
    nillable="true" just means that the name element can carry a null value. If you want the name element to be optional, then you must use the minOccurs=0 and keep the maxOccurs to it's default value of 1. Using an array is just a bad work around. This is for deserialization (XML to JAVA).
    The second part of you problem is on the serialization (or JAVA to XML). When you have a JAVA Bean, there is no way to make the difference between a member's value being null or not set, so it's impossible to decide if you need to send back a nul (xsi:nil="true"), an empty element <ns1:name/> or nothing.
    That said, if you do want to go the XML route, you can use the dataBinding="false" flag in the different WSA command. Instead of converting XML into JAVA, you will have SOAPElement parameters, where you can do all you want (see WS user's guide [1] for details - chapter 16). Note that you have to make sure that the WSDL (your contract) reflect what you are doing on the wire (format of your messages), so that you do not geopardize your interoperability with other toolkit.
    Note that this only applies to literal message formats (use attribute in WSDL), which is your case.
    Hope this helps,
    Eric
    [1] http://download-west.oracle.com/otn_hosted_doc/ias/preview/web.1013/b14434.pdf

  • XSU - Mapping element names that exceed max length for oracle identifiers

    Hello everyone,
    I am trying to load an XML file in relational tables using XSU. While I have figured out on how to do it, I have two questions:
    1) Is it possible to load data of an element, the name of which exceeds 32 characters in a column the name of which is different from the element name?
    2) Is it possible to skip an element in the mapping while loading an XML? e.g.
    The XML is like:
    <Heroes>
    <Name>Superman</Name>
    <Profession>Superhero</Profession>
    <Alias>Clark Kent</Alias>
    <Hometown>Smallville</Hometown>
    </Heroes>
    and I don't want to load the Alias element. To put it in another way, the Alias element may or may not be appearing in the XML.
    Thank you for the time.
    Regards,
    Sohail
    Edited by: sohail.muhammad on Sep 1, 2010 12:27 AM

    Apply an XSLT to omit an element.
    http://www.devx.com/xml/Article/32046

  • XmlPublisher element name conflict problem

    How do I specifically tell the publisher to choose between two similar element name under different branch which one I want?
    example:
    <root>
         <same>Not what I want</same>
        <branch>
            <same>What I want</same>
        </branch>
    </root>

    How do I specifically tell the publisher to choose between two similar element name under different branch which one I want?
    example:
    <root>
         <same>Not what I want</same>
        <branch>
            <same>What I want</same>
        </branch>
    </root>

  • Element name and accrual plans

    Hi
    Is it possible to attache morethan one accrual plan to one element
    For. element name : L500Annual Leave
    Accrual Plan name
    Annual Leave normal
    Annual leave maternity
    Thanks
    regards
    anna

    Yes. Same element can be attached to different accrual plans.
    Regards,
    Ajay

  • Form Element Name, is it possible to set in "Column Attibutes" ?

    Is it possible to set the "Form Element Name" for a column e.g. in tabular form in the "Column Attributes" which can be found from:
    Page --> Report region --> Report Attributes --> and select Column --> Column Attributes: for the selected column.
    The idea is to avoid coding the form element names with e.g. like:
    SELECT APEX_ITEM.SELECT_LIST_FROM_LOV(2,job,'JOB_FLOW_LOV')
    FROM emp
    Where the 2 is the Form Element Name for the column and a bit confusingly to F02, which can be seen e.g. with Firebug.
    Another question is that is it possible then to override the Form Element Name if the query has hardcoded different P_IDX in the apex_item.xxx ?
    Perhaps it would be very good to have a mapping too in the "Report Attributes"l for the columns order vs. collections order vs. Form Element Name order .
    rgrds Paavo

    I want to have control over certain 'dimension type of' columns in the classic report / tabular form with APEX_ITEM.* in the sql for the report while some of the columns are from Collection with their collection column names. C001, C002 etc..
    ...clips
    SELECT
    APEX_ITEM.SELECT_LIST_FROM_LOV(35
    ,C035,'LOV_ANIMALS'
    ,'style="width:50px"','YES',NULL,NULL
    ,'f35_' || LPAD (seq_id, 4, '0'),NULL) animals
    ,to_number(c001) c001
    ,to_number(c002) c002
    FROM apex_collections WHERE collection_name = 'SLEEPY_ANIMAL'
    ...clips
    When there are several columns in the report, it is easier to maintain C001...columns appearance in the Report Attributes-->Column Attributes.
    Oh yes, I have adapted Denes dynamic cascading lov for tabular forms which is the reason for having the "APEX_ITEM..." in the query and from some blog I read that it is very good to toss those 'dimension' type of columns to high-end numbers in the collection, so there will be space for the entry columns.
    E.g. firstrow in the tabular form
    c035 -- animals --> f35 --> f35_0001 (select list with lov LOV_ANIMALS)
    c001 -- "what ever I have said in Column attributes"--> f01 --> f01_0001 (text area, editable column)
    c002 -- "what ever I have said in Column attributes"--> f02 --> f02_0001 (text area, editable column)
    So the numbering is the same for the www-form and collection columns.
    Everything is ok if the columns c001 and c002 are editable e.g. 'text area' type, but if I change c001 to 'Display..' type then the order for item_id's change.
    c035 -- animals --> f35 --> f35_0001
    c001 -- "what ever I have said in Column attributes" (display as text (escape special chars...))
    c002 -- "what ever I have said in Column attributes"--> f01 --> f01_0001
    So now the collection column c002 accidentally is mapped to forms f01-column while I might assume it is f02.
    rgrds Paavo

  • HT204053 i RECENTLY PURCHASED ANOTHER IPHONE.  MY INTERNET IS NOT WORKING.  I JUST CREATED AN APPLE ID.  WHAT'S NEXT?  I NOW HAVE TWO DIFFERENT ACCOUNTS WITH DIFFERENT USER NAMES.  HOW CAN I USE ONLY ONE ACCOUNT FOR ITUNES, ICLOUD APPLE ID ETC???

    I RECENTLY PURCHASED ANOTHER IPHONE.  MY INTERNET IS NOT WORKING.  I JUST CREATED AN APPLE ID.  WHAT'S NEXT?  I NOW HAVE TWO DIFFERENT ACCOUNTS WITH DIFFERENT USER NAMES.  HOW CAN I USE ONLY ONE ACCOUNT FOR ITUNES, ICLOUD APPLE ID ETC???

    Welcome to the Apple community.
    iTunes and iCloud and different accounts, you will need to delete both accounts from your device before adding the new details in their place.
    For iCloud go to settings > iCloud, scroll down and hit the delete button. You can then sign back in using your correct details. For iTunes go to settings >store, tap your account ID and then sign out, you can then sign back in using your correct Apple ID.

  • Transfer structure have two different tech names?

    Hi BW experts,
    we got issue in transfer structure which have two different technical names:
    ZCUSTOMER_DC and
    ZCUSTOMER_PS
    where zcustomer is the info source name.
    The impact: PSA data can't be accessed ...
    Any help and feedback is highly appreciated!
    Regards,
    Lilly

    Hi Dinesh,
    Thanks for your feedback.
    Unfortunately, this issue is thru our system landscape incl. production. If I try to delete the DS assignment I will lose data in the PSA, right?
    However, I did try to delete the DS assignment and delete the info source (the one which is available on dev only), failed, the message I get is info object xyz still being used in communication structure (I believe it must the TS with old prefix), deletion not possible.
    The problem is I am not able to delete the TS with old prefix , because it is not visible in system (AWB).
    Any further feedback appreciated

  • How to pass database logon info to a Crystal Report in a subreport with different server name using VS C #

    Post Author: fabu1971
    CA Forum: .NET
    I could pass the database logon in Reports with subreports but the reports with subreports with different  server name I can not pass the logon information . Do you have any idea how I can do that to pass the database logon with different database or server name ?

    Post Author: quafto
    CA Forum: .NET
    You can use the Subreports collection of the ReportDocument object to access all the subreports in your main report. These are returned as ReportDocument objects. Once you have your subreport as a ReportDocument you can loop through your Tables collection and set the ConnectionProperties to your appropriate Server/Database. For example here is some pseudo code: ConnectionInfo boConnectionInfo = new ConnectionInfo();boConnectionInfo.ServerName = "serverName";boConnectionInfo.DatabaseName = "databaseName";boConnectionInfo.UserID = "username";boConnectionInfo.Password = "yourpassword"; foreach(ReportDocument boSubreport in mainReport.Subreports){    foreach(Table boTable in boSubreport.Database.Tables)    {        TableLogOnInfo boTableLogOnInfo = boTable.LogOnInfo;          boTableLogOnInfo.ConnectionInfo = boConnectionInfo;          boTable.ApplyLogOnInfo(boTableLogOnInfo);          boTable.Location = "newtablelocation";     }}

  • HT5624 My husband, myself & our 2 daughters all use the same Apple ID but w different user names. Is this a potential problem?

    4 members of my family use the same Apple ID but different user names
    Is this a potential problem w privacy etc?

    Since the Apple ID does not have a username, I suppose you mean different e-mail-adresses?
    In theory, this is not a problem, but of course it can be difficult if you want to keep things separated. For example, logging in with you Apple ID will automatically set up iCloud and sync your calendar, reminder, notes, mails etc. You can disable this syncing on your daughter's devices, but then they won't be able to use functionalities unless they create their own accounts (for example set up another email account). I think (but I am not 100% on this) they will be able to create reminders/notes etc. locally on the iphone.
    If you mean app-wise or legal-wise: No, this is not an issue. You can use your Apple ID and the apps you bought on up to five different devices. Still, for simplicities sake and to give everyone their share of privacy I personally would suggest different IDs for everyone.

  • How do you do a quick transfer of data from one TX to another TX with different user name

    I have more than one TX and want to keep most of the information, addresses, media, calendar as well as third party software the same on all my TX's.  Is there a way to do this without the long hassle of exporting all that can be exported, and then importing it into each TX.  Then adding all the third party software again?  I have a new TX and remember how long this takes, so I am hoping for a faster method.   I already know how to do a transfer if using the same user name, but this won't work when each will have a different user name in order to hotsync.
    This may be a different question. All the TXs will be used and will sync to the same computer via USB, and all are on the Palm Desktop.   I want to use them interchangeably.  I would also like to keep the information current on all of them, as I now must copy paste any new info (ex. new address) into each via either palm desktop, or beaming to the others.  Often this leads to discrepancies of the data between the different TXs. 
    Post relates to: Palm TX
    Message Edited by Silfox on 06-22-2009 09:03 AM

    You might look into a program called "SyncUs" from an author in the UK.  It will keep all the PIM data synced between two Palm OS units.
    WyreNut
    I am a Volunteer here, not employed by HP.
    You too can become an HP Expert! Details HERE!
    If my post has helped you, click the Kudos Thumbs up!
    If it solved your issue, Click the "Accept as Solution" button so others can benefit from the question you asked!

Maybe you are looking for