XPath expression with multiple namespaces?

Hello all.
I have been scouring the forums and Google and can't seem to find anything similar to my problem.
I have the following XML with three namespaces. Two are defined in the root element and the third is defined in the the IdSession element. To make things even more confusing, the second and third namespaces have the same prefix, 'f'.
This is the xml:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<NamespaceTestCall xmlns="http://my.default/namespace"
xmlns:f="http://my.second/namespace">
...<f:Level1>
......<f:IdSession xmlns:f="http://my.third/namespace">12345</f:IdSession>
......<Language>ENG</Language>
...</f:Nivel1>
</NamespaceTestCall>
My question is, how do I get at the IdSession element? Don't I need to create an XPath object and assign it more than one NamespaceContext?
This is what I am doing:
Document xmlDocument = loadXML(xmlSource);
XPath xpathEvaluator = XPathFactory.newInstance().newXPath();
xpathEvaluator.setNamespaceContext(new NamespaceContextProvider("a", "http://my.third/namespace"));
... xpathEvaluator.evaluate("//a:IdSession", ...);
This code works but it might not return the 'IdSession' I want, since by searching like this '//a:IdSession' it is looking in the whole document. If there were another 'IdSession' somewhere else in the document with the same URI, it would be returned. I want the 'IdSession' that lives inside of 'Level1'.
So what I would like to do is something like this:
... xpathEvaluator.evaluate("/*/Level1/a:IdSession", ...);
But this does NOT work because 'Level1' has its own namespace. So what it seems like I need to do is the following:
... xpathEvaluator.evaluate("/*/b:Level1/a:IdSession", ...);
Having already added the 'Level1' namespace to the XPath object, with the prefix 'b'. But unlike JDOM, there is no 'add' functionality, only 'set', meaning if you call set twice the second call overwrites the first.
Is there anyway to do this?
Many thanks!
Bob

Hello,
Sorry, that was my bad. I should have explained that NamespaceContextProvider is nothing more than my implementation of the NamespaceContext interface. The way I did it, I simply implemented getNamespaceURI() and getPrefix(). And the constructor accepted two parameters -- prefix and URI. So my problem was that when I assigned this NamespaceContext to my XPath object it would only have one prefix and one URI.
But I found an implementation here:
http://www.oreillynet.com/cs/user/view/cs_msg/50304
that instead of only having one prefix and URI uses a map. Thus its method setNamespace() adds the prefix and URi to the map, and getPrefix() and getPrefixes() retrieve them from the map.
Now when I want to use more than one namespace I simply call setNamespace() as many times as necessary, adding a prefix and URI pair each time, and when I am done I assign it to my XPath object.
And it works!
Thanks for the response!
Bob

Similar Messages

  • Using xpath.evaluate(): xpath exp with multiple namespaces

    Hi,
    I have to evaluate a xpath expression with parent node and child node having different namespaces. Like : env:parent/mig:child.
    I have set the namespacecontext for the child node[i.e., for the prefix 'mig'.]
    But am getting this error :
    javax.xml.transform.TransformerException: Prefix must resolve to a namespace: env
    How can I set the namespace context for both the parent and child nodes? Or is there are any other way of doing it?
    I cant use //mig:child as the requirement needs the whole xpath expression [env:parent/mig:child] to be given as input for the xpath.evaluate() method.
    Here's the code :
    File file = new File("D:\\Backup\\XMLs\\test.xml");
    Document xmlDocument = builder.parse(file);
    XPath xpathEvaluator = XPathFactory.newInstance().newXPath();
    xpathEvaluator.setNamespaceContext(new NamespaceContextProvider("env", "http://xmlns.oracle.com/apps/account/1.0"));
    NodeList nodeList =
    (NodeList)xpathEvaluator.evaluate("/env:parent/mig:child", xmlDocument,
    XPathConstants.NODESET);
    xpathEvaluator.setNamespaceContext(new NamespaceContextProvider("mig", "http://xmlns.oracle.com/apps/account/1.0"));
    Thanks in advance.

    If you want, I can help you tomorrow. Call me at my nieuwegein office or mail me at marco[dot]gralike[at]amis[dot]nl
    I have some time tomorrow, so I can help you with this. My next presentation for UKOUG will be on XML indexes strategies anyway...
    In the meantime and/or also have a look at:
    XML Howto's (http://www.liberidu.com/blog/?page_id=441) specifically:
    XML Indexing
    * Unstructured XMLIndex (part 1) – The Concepts (http://www.liberidu.com/blog/?p=228)
    * Unstructured XMLIndex (Part 2) – XMLIndex Path Subsetting (http://www.liberidu.com/blog/?p=242)
    * Unstructured XMLIndex (Part 3) – XMLIndex Syntax Dissected (http://www.liberidu.com/blog/?p=259)
    * Unstructured XMLIndex Performance and Fuzzy XPath Searches (http://www.liberidu.com/blog/?p=310)
    * Structured XMLIndex (Part 1) – Rules of Numb (http://www.liberidu.com/blog/?p=1791)
    * Structured XMLIndex (Part 2) – Howto build a structured XMLIndex (http://www.liberidu.com/blog/?p=1798)
    * Structured XMLIndex (Part 3) – Building Multiple XMLIndex Structures (http://www.liberidu.com/blog/?p=1805)
    The posts were based on Index for XML with Repeated Elements maybe that is a bit better to read than on my notepad on the internet (aka blog)
    Edited by: Marco Gralike on Oct 28, 2010 7:51 PM

  • XML Structured Index with multiple namespaces

    Hi,
    I'm having some trouble creating an xmlindex with structured component on a clob xmltype column without registered schema, whose data uses multiple namespaces.
    The code I'm using atm:
    CREATE TABLE "DECLARATIONS"
        "ID" NUMBER(19,0),
        "XML" "SYS"."XMLTYPE"
    CREATE INDEX decl_header_ix ON "DECLARATIONS"(xml) INDEXTYPE IS XDB.XMLINDEX
      PARAMETERS ('PATHS (INCLUDE (/emcs:emcsDeclaration/emcs:header//*)
                          NAMESPACE MAPPING (xmlns:emcs="http://www.myurl.eu/myapp/schema/emcs/nl"))');
    INSERT INTO "DECLARATIONS" VALUES (1,'
    <?xml version = ''1.0'' encoding = ''UTF-8'' standalone = ''yes''?>
    <emcs:emcsDeclaration xsi:schemaLocation="http://www.myurl.eu/myapp/schema/emcs/nl emcs_domain.xsd"
    xmlns:common="http://www.myurl.eu/myapp/schema/common"
    xmlns:emcs="http://www.myurl.eu/myapp/schema/emcs/nl"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <emcs:header>
          <common:identifier>70</common:identifier>
          <common:declarationSequenceNumber>54566</common:declarationSequenceNumber>
          <common:dateCreated>2010-10-21-01:00</common:dateCreated>
          <common:status>01 Draft e-AAD in preparation</common:status>
       </emcs:header>
    </emcs:emcsDeclaration>');A this moment it's not desirable for us to register the schemas used in oracle. According to the documentation I should be able to add a structured component to the index as follows:
    BEGIN
          DBMS_XMLINDEX.registerParameter('MY_XSI_GROUP_PARAMETER'
                  , 'ADD_GROUP GROUP MY_XSI_GROUP
                   XMLTABLE decl_header
                   XMLNAMESPACES (''http://www.myurl.eu/myapp/schema/emcs/nl'' AS emcs,
                           ''http://www.myurl.eu/myapp/schema/common'' AS common),
                        COLUMNS
                  status VARCHAR2(30)  PATH ''/emcs:emcsDeclaration/emcs:header/common:status/text()''
       END;
    ALTER INDEX DECL_HEADER_IX PARAMETERS('PARAM MY_XSI_GROUP_PARAMETER');However this results in an ORA-00904: invalid identifier. After some experimenting it seems that oracle tries to parse the namespace URLs as identifiers (even tho http://download.oracle.com/docs/cd/E14072_01/appdev.112/e10492/xdb_indexing.htm#BCGJAAGH & http://download.oracle.com/docs/cd/E14072_01/appdev.112/e10492/xdb_xquery.htm#BABJCHCC specify the former), so I swapped them around:
    BEGIN
          DBMS_XMLINDEX.dropParameter('MY_XSI_GROUP_PARAMETER');
          DBMS_XMLINDEX.registerParameter('MY_XSI_GROUP_PARAMETER'
              , 'ADD_GROUP GROUP MY_XSI_GROUP
              XMLTABLE decl_header
              XMLNAMESPACES (emcs ''http://www.myurl.eu/myapp/schema/emcs/nl'',
              common ''http://www.myurl.eu/myapp/schema/common''),
              COLUMNS
              status varchar2(30)  PATH ''/emcs:emcsDeclaration/emcs:header/common:status/text()''
       END;
    ALTER INDEX DECL_HEADER_IX PARAMETERS('PARAM MY_XSI_GROUP_PARAMETER');Oracle seems to get a bit further with this, resulting in a ORA-19102: XQuery string literal expected. Here I pretty much hit a dead end. Removing the xmlnamespaces declaration altogether leads to a ORA-31013: Invalid XPATH expression. Going through the examples on http://www.liberidu.com/blog/?p=1805 works fine, but as soon as I try to add namespaces to it they stop working as well.
    So my question is: how do I get xmlnamespaces (with non-default namespaces) to work in a structured xmlindex component?

    If you want, I can help you tomorrow. Call me at my nieuwegein office or mail me at marco[dot]gralike[at]amis[dot]nl
    I have some time tomorrow, so I can help you with this. My next presentation for UKOUG will be on XML indexes strategies anyway...
    In the meantime and/or also have a look at:
    XML Howto's (http://www.liberidu.com/blog/?page_id=441) specifically:
    XML Indexing
    * Unstructured XMLIndex (part 1) – The Concepts (http://www.liberidu.com/blog/?p=228)
    * Unstructured XMLIndex (Part 2) – XMLIndex Path Subsetting (http://www.liberidu.com/blog/?p=242)
    * Unstructured XMLIndex (Part 3) – XMLIndex Syntax Dissected (http://www.liberidu.com/blog/?p=259)
    * Unstructured XMLIndex Performance and Fuzzy XPath Searches (http://www.liberidu.com/blog/?p=310)
    * Structured XMLIndex (Part 1) – Rules of Numb (http://www.liberidu.com/blog/?p=1791)
    * Structured XMLIndex (Part 2) – Howto build a structured XMLIndex (http://www.liberidu.com/blog/?p=1798)
    * Structured XMLIndex (Part 3) – Building Multiple XMLIndex Structures (http://www.liberidu.com/blog/?p=1805)
    The posts were based on Index for XML with Repeated Elements maybe that is a bit better to read than on my notepad on the internet (aka blog)
    Edited by: Marco Gralike on Oct 28, 2010 7:51 PM

  • XPath query on multiple namespace XML document

    Hi,
    I am trying to locate an element in a WordML XML document using XPath.
    The structure looks like:
    <w:body>
         <wx:sect>
              <aml:annotation aml:id="0" w:type="Word.Bookmark.Start" w:name="DOC0000966"/>
    ...So I use the following expression "/wordDocument//body/sect" wich gives me a list with the <w:sect> nodes.
    Then I search for "annotation[@type='Word.Bookmark.Start']" starting from each <w:sect> node. This yields the <aml:annotation> elem.
    So far so good.
    Now I have to handle a second case as well.
    <w:body>
         <wx:sect>
         <w:p>
              <aml:annotation aml:id="0" w:type="Word.Bookmark.Start" w:name="DOC0000966"/>
    ...As you can see the <aml:annotation> is nested inside a <w:p> elem.
    My intention was to use the expression "//annotation[@type='Word.Bookmark.Start']"to handle both cases, but this expression does not match neither.
    I have tried several different alternatives with expressions and NamingContext implementations, none working.
    What am I missing?
    Thanks in advance,
    Mariano.

    Hello,
    I decided to remove all namespaces and prefixes from the XML document and now the expression works.
    I have chaned the following:
    DocumentBuilderFactory is now namespace aware (it isn't by default).
              DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
              builderFactory.setNamespaceAware(true);I picked this NamespaceContext implementation from JAXP 1.4 samples and mapped all prefixes and namespaces coming inside the XML.
              NamespaceContextImpl ns = new NamespaceContextImpl();
              ns.bindPrefixToNamespaceURI("aml", "http://schemas.microsoft.com/aml/2001/core");
              ns.bindPrefixToNamespaceURI("dt", "uuid:C2F41010-65B3-11d1-A29F-00AA00C1488");
              ns.bindPrefixToNamespaceURI("o", "urn:schemas-microsoft-com:office:office");
              ns.bindPrefixToNamespaceURI("sl", "http://schemas.microsoft.com/schemaLibrary/2003/core");
              ns.bindPrefixToNamespaceURI("v", "urn:schemas-microsoft-com:vml");
              ns.bindPrefixToNamespaceURI("w", "http://schemas.microsoft.com/office/word/2003/wordml");
              ns.bindPrefixToNamespaceURI("w10", "urn:schemas-microsoft-com:office:word");
              ns.bindPrefixToNamespaceURI("wx", "http://schemas.microsoft.com/office/word/2003/auxHint");
              XPathFactory xpathFactory = XPathFactory.newInstance();
              XPath xpath = xpathFactory.newXPath();
              xpath.setNamespaceContext(ns);Finally, I prefixed all elements in xpath expressions.
    "//aml:annotation[@w:type='Word.Bookmark.Start']"Happier now,
    Mariano.

  • 1     Unable to retrieve the form values entered by the user from the xpath expression(with or without s

    1.1 Description of the Workflow
    We have designed a Workflow, which has an init form HighLevelQuestionnaire.
    1. The user attempts to start the workflow by submitting this form, which has an XML schema embedded.
    2. When user submits the data, we set workflow variables to fetch data from the init-form and all the values entered by the user are stored in the database.
    3. Based on the values, value of Risk Level is calculated to be either High or Medium, and user is routed to one of the two routes.
    4. The user QPAC is used to show the next form to the user.
    Another form has been designed called AssessRisk in which user is asked to confirm the Risk Level.
    5. At this point, we use Script QPAC to print the values in the log.
    1.2 Problem description
    1. In the Point No. 6 of the workflow, the values are not printed in the log. A blank space is printed instead.
    2. Initially, we embedded the schema in the form. But when values were not printed, we removed the schema. Even then it didnt work.
    1.2.1 User QPAC Specifications
    Properties of user QPAC used in Step 4 of the workflow
    Mappings Tab: -
    Input Variable --- No variable
    Template URL ----- Form11.xdp
    Output Variable ---- myform
    Myform is a form-variable, which has template URL as Form11.xdp
    1.2.2 Script QPAC
    1.2.2.1 With XML Schema embedded
    import com.adobe.workflow.pat.service.*;
    System.out.println("----------- High Level Questions -----------");
    System.out.println("--1- the RiskLevel is: " + patExecContext.getProcessDataStringValue("/process_data/myform/form-data/data/xdp/dataset s/data/RiskLevel/general/Risk_Level") + " @@@@@");
    Note:- Here RiskLevel is the schema root of myform and Risk_Level is the schema variable mapped with textfield on the form
    1.2.2.2 Without XML Schema embedded
    System.out.println("--1.1- the RiskLevel is: " + patExecContext.getProcessDataStringValue("/process_data/myform/form-data/data/xdp/dataset s/data/fields/Risk_Level") + " @@@@@");
    1.2.2.3 Conclusion
    In both the cases, a blank value is printed. In both the cases, we get some output which is when we use
    System.out.println("--1.1- the RiskLevel is: " + patExecContext.getProcessDataStringValue("/process_data/myform/form-data/data/xdp/dataset s/data ") + " @@@@@");
    In this case all the values are printed with space in between.
    This is the basic feature which has to be used while developing workflows.

    Hi
    You might want to try using VariableLogger, at:
    http://www.avoka.com/avoka/qpac_library.shtml
    It's a little more reliable than the script QPAC, especially if one of your xpath expressions is wrong.
    Please note that embedding the schema makes no difference in how the data from the form is stored. What makes the difference is whether your fields are bound to specify schema elements, or whether they use the "normal" binding.
    Howard

  • UCCX XPath-expression with -operator does not work

    Hi all,
    I'd like to read opening hours from an XML file. The UCCX version is 8.5.
    The XML looks like this:
    <ccdata>
       <dow>
          <dow6>
             <open>
                <from hour="8"  minute = "00" />
                <until hour="19" minute ="15" />
             </open>           
         </dow6>
      </dow>
    </ccdata>
    I simpified the file for testing, it should contain several open items later for every day of week.
    I want to use an XPath expression to check if there's a open item for the current day of week and time.
    I started with a simplified expression that should return the node for an hour value of 8:
    //ccdata/dow/dow6/open/from[@hour=8 ]/@hour
    that's working- it returns "8".
    But if I change the expression to return the node for an hour value less then 9:
    //ccdata/dow/dow6/open/from[@hour<9]/@hour
    it returns nothing. If I enter the expression into a XPath test tool ("XPath Visualizer Tool") it looks ok.
    Any ideas? Is that a bug?
    Thanks in advance
    Jörg

    It must be a bug- I tried it on UCCX 7.0(1)SR03 and it's working there.

  • XSD validation with multiple namespaces

    Hi All,
    I'm trying to validate some XML using an XSD that contains multiple namespace schema descriptions, as such, the main XSD file must import an XSD for each namespace.
    The difficulty is that I cannot seem to find a way (in Oracle) to run a XSD validation using this (multi-XSD file) method.
    Has anyone out there tackled a similar problem?
    Cheers,
    Ben

    check out the class
    CL_XML_SCHEMA
    Regards
    Raja

  • Single Airport Express with Multiple iTunes Clients ?

    Is it possible for an Airport Express to be controlled by more than one copy of iTunes or does it have to be a unique pairing?
    I have an office of Mac users who want to be able to play from their desktop iTunes libraries to an office stereo connected to an AE. Obviously they can't all play at once... But will they all be able to see a single AE and stream to it on a first come first served basis?
    I can't find anything relevant on Apple site or by googling. Everything is about one copy of iTunes to Multiple Airport Expresses (Expressi?).
    Thanks in advance
    greg.

    Yes, they can play music through iTunes off each of their desktops. Here's the catch...if someone has the AirportExpress picked as their selected speaker, nobody else can play music through it until that user changes the AE speaker back to "Computer" via iTunes on their desktop. All of the other users would see a message that another computer is using that speaker.

  • Complex xml with multiple namespaces giving LPX-00601: Invalid token error

    Hi
    Apologies if this is a really simple question.
    I have not worked with xml before and I'm drowning in different ways to do the extract.
    I have a very complex xml, sample below, which I'm trying to do one siple extract to get myself going.
    I have the data in a table in an xmltype column,
    I am trying to extract containernumber first and get the error.
    select xml_column, extract(xml_column,'/env:Envelope/env:Body/ns0:QueryCntrNumberResponse/ns0:QueryResContainerDetail/ns1:ContainerNumber/ns2:ContainerNumber')
    from test_xml;
    Not sure if I should use the namespaces and have tried without but results are always NULL
    I would really appreciate any pointers around these ultiple namespaces.
    Thanks
    Nicki
    XML Sample
    <?xml version="1.0" encoding="UTF-8"?>
    <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://com.cargosmart.cargotracking.webservice.cntr.dto"
                  xmlns:ns1="http://com.cargosmart.cargotracking.webservice.common.dto"
                  xmlns:ns2="http://com.cargosmart.cargotracking.webservice.basic.dto"
                  xmlns:ns3="http://com.cargosmart.cargotracking.webservice.bl.dto"
                  xmlns:ns4="http://com.cargosmart.cargotracking.webservice.bkg.dto">
      <env:Body>
        <ns0:QueryByCntrNumberResponse>
          <ns0:QueryRes ult="">
            <ns0:QueryCriteria>
              <ns1:CarrierSCACCode>APLU</ns1:CarrierSCACCode>
              <ns1:ContainerNumber>APZU344693-1</ns1:ContainerNumber>
            </ns0:QueryCriteria>
            <ns0:ContainerDetail>
              <ns1:ContainerNumber>
                <ns2:ContainerNumber>APZU344693</ns2:ContainerNumber>
                <ns2:ContainerCheckDigit>1</ns2:ContainerCheckDigit>
                <ns2:GrossWeight>
                  <ns2:Weight>20260.8</ns2:Weight>
                  <ns2:WeightUnit>KGS</ns2:WeightUnit>
                </ns2:GrossWeight>
              </ns1:ContainerNumber>
    NOT THE FULL COLUMN

    Could I just ask you one more question.
    I had already expanded the query to include the repeating sections using xmlsequence.
    Has that been replaced too?
                select extractvalue(xml_column,'/env:Envelope/env:Body/ns0:QueryByCntrNumberResponse/ns0:QueryResult/ns0:ContainerDetail/ns1:ContainerNumber/ns2:ContainerNumber',
                  'xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" 
                  xmlns:ns0="http://com.cargosmart.cargotracking.webservice.cntr.dto"
                  xmlns:ns1="http://com.cargosmart.cargotracking.webservice.common.dto"
                  xmlns:ns2="http://com.cargosmart.cargotracking.webservice.basic.dto"
                  xmlns:ns3="http://com.cargosmart.cargotracking.webservice.bl.dto"
                  xmlns:ns4="http://com.cargosmart.cargotracking.webservice.bkg.dto"') col1,
                  extractvalue(value(t2),'/ns1:Event/ns1:EventDescription', 'xmlns:ns1="http://com.cargosmart.cargotracking.webservice.common.dto"') Event_Description,
                  extractvalue(value(t2),'/ns1:Event/ns1:EventDT/ns2:LocDT', 'xmlns:ns1="http://com.cargosmart.cargotracking.webservice.common.dto" xmlns:ns2="http://com.cargosmart.cargotracking.webservice.basic.dto"') Event_DT,
                  extractvalue(value(t2),'/ns1:Event/ns1:Location/ns2:LocationName', 'xmlns:ns1="http://com.cargosmart.cargotracking.webservice.common.dto" xmlns:ns2="http://com.cargosmart.cargotracking.webservice.basic.dto"') location
    from test_xml t1,
    table(xmlsequence(extract(t1.xml_column,'/env:Envelope/env:Body/ns0:QueryByCntrNumberResponse/ns0:QueryResult/ns0:ContainerDetail/ns1:Event','xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" 
                  xmlns:ns0="http://com.cargosmart.cargotracking.webservice.cntr.dto"
                  xmlns:ns1="http://com.cargosmart.cargotracking.webservice.common.dto"
                  xmlns:ns2="http://com.cargosmart.cargotracking.webservice.basic.dto"
                  xmlns:ns3="http://com.cargosmart.cargotracking.webservice.bl.dto"
                  xmlns:ns4="http://com.cargosmart.cargotracking.webservice.bkg.dto"'))) t2;

  • How to use more than one airport express with multiple speakers

    I have 2 Airport Express. Prior to the multiple speaker enhansement I changed spekers by changing the wireless network. Each of the Airports is recognised as a wirelss network. Is there any way I can make my computer and itunes to see all of my Airports so I can use the Multiple Speaker function for both of my Airports at the same time withour having to change wireless network.

    You need to have a single wireless network.
    If you con't have a wireless router, then you will need to configure one of the Airport Express (AX) units to join the existing wireless network of the other AX.

  • Response with multiple namespaces...

    Hi there!
    We have several webservices working as "document", they receive a XML document and send a XML document as response.
    The problem is that the returned document has a namespace prefix for each XML tag. All of then with the same name space:
    [n1:enviar_ofersecResponse xmlns:n1="a name space"]
    [n2:IdentificacionMensaje xmlns:n2="a name space" v="respuesta_ofersecen01_20040921.1"/]
    [n3:FechaHoraMensaje xmlns:n3="a name space" v="2004-09-21T12:07:30+02:00"/]
    [n4:IdentificacionRemitente xmlns:n4="a name space" v="HC_G"/]
    [n5:FuncionRemitente xmlns:n5="a name space" v="A08"/]
    ... and so on...
    How avoid this different prefix with the same name space for each tag?. Our xml documents are big... about 5 M... so it's a waste of space and time process all those prefix and namespaces...
    Thanks in advance!.

    Hello,
    We are experiencing this as well as we are upgrading from WLS 7.0 to 8.1. WLS 7.0 worked as expected. We made no changes to the webservices.xml between 7.0 and 8.1. This response element snippet is an example of 7.0 compared to 8.1:
    ***BEFORE - wls 7***
      <ns1:memberFound>Y</ns1:memberFound>
    ***AFTER - wls 8.1***
    <ns1:memberFound xmlns:ns1="http://www.definityhealth.com/webservice/member/memberlookup">Y</ns1:memberFound>
    I'm pursuing this with support and will report back findings here.
    thanks,
    chad.

  • Issue with extracting node values of an XMLElement with multiple namespaces

    I have created a Table with XMLType Column
    CREATE TABLE xmlNode
    ( ID numeric(10) primary key,
    DATA XMLType);
    Then inserted one row
    INSERT INTO xmlNode(ID, DATA) VALUES(1, '<lineItemElement orderLineItemID="12323" transactionType="New" xmlns="http://rcss.bell.ca/schema/lineitemmessages">
    <rcss:catalogeID xmlns:rcss="http://rcss.bell.ca/schema/PartnerBatch">3234</rcss:catalogeID>
    <rcss:venueID xmlns:rcss="http://rcss.bell.ca/schema/PartnerBatch">345345</rcss:venueID>
    <rcss:startDate xmlns:rcss="http://rcss.bell.ca/schema/PartnerBatch">2007-09-10T00:00:00Z</rcss:startDate>
    <rcss:endDate xmlns:rcss="http://rcss.bell.ca/schema/PartnerBatch">2007-09-10T00:00:00Z</rcss:endDate>
    <rcss:contact contactID="234234" xmlns:rcss="http://rcss.bell.ca/schema/PartnerBatch">
    <rcss:address>
    <rcss:streetAddress1>?asdsd</rcss:streetAddress1>
    <rcss:streetAddress2>?sdss</rcss:streetAddress2>
    <rcss:city>?ddf</rcss:city>
    <rcss:province>?sdcfsdcf</rcss:province>
    <rcss:country>sds</rcss:country>
    <rcss:postalCode>1121332</rcss:postalCode>
    </rcss:address>
    </rcss:contact>
    </lineItemElement>')
    Then i ran:
    SELECT
    extractValue(data,'/lineItemElement/rcss:catalogeID','xmlns=http://rcss.bell.ca/schema/lineitemmessages, xmlns:rcss=http://rcss.bell.ca/schema/PartnerBatch')
    from xml where id=1
    There is nothing returned.
    Please advise how could I get the node value when there is namespace?
    I know how to extract values if there is one namespace but i'm not able to extract values if there are two namespaces.
    Any help is appreciable!!
    Thanks in Advance.

    I fixed that problem too. What I thought was a singleton was actually a repeating element. I needed to be able to "multiply" the repeating node for the main node, but I couldn't find a concise way of doing this in SQL. So instead I did it in with two loops.
    FOR rec IN (
    SELECT
         extractvalue(value(e), 'surchargeEntry/company',p_namespace) company
         ,extractvalue(value(e), 'surchargeEntry/surchargeType',p_namespace) surcharge_type
         ,extractvalue(value(e), 'surchargeEntry/shortDescription',p_namespace) short_description
         ,extractvalue(value(e), 'surchargeEntry/longDescription',p_namespace) long_description
         ,e.column_value surcharge_entry_xml
         FROM TABLE(xmlsequence(extract(p_xml, 'surchargeInquiryResponse' ||
         '/surchargeAttributes/surchargeEntry'
                                                                                    ,p_namespace))) e
    ) LOOP
    FOR rec_country IN (
    SELECT
         extractvalue(value(c), 'country/originationCountry',p_namespace) origination_country
         ,extractvalue(value(c), 'country/destinationCountry',p_namespace) destination_country
         FROM TABLE(xmlsequence(extract(rec.surcharge_entry_xml, 'surchargeEntry/country',p_namespace))) c
    LOOP
    nafta_fee_obj.append_surcharge_entry_data(
              v_arr
              ,r_surcharge_entry(
              rec.company
              ,rec.surcharge_type
              ,rec.short_description
              ,rec.long_description
              ,rec_country.origination_country
              ,rec_country.destination_country
    END LOOP;
    END LOOP;
    I populate a collection, which is easy to pass around between routines. I can easily convert the collection to a ref cursor, and index-by array, comma-delimited string, etc.
    Apparently, the namespace is required in SQL, but not in staright PL/SQL.
    I've also noticed that the docs say xmltype() has all these member functions, but when I try to use some of them, I get an error that it's undefined. Like getNumVal(). There are some functions I can use in SQL, or PL/SQL, but not vice-versa.
    - Dan Clamage

  • XPath query with out namespace is possible ?

    Hi,
    our system reciving xml data using the datatype xsd[b] &lt;any/&gt; . am sure the system will receive the data in same format[node hierarchical] but the namespace of the root element may be differ..
    i want write xpath which should not be parse based on the namespace of element.
    like the method setNameSpaceAware(false) in java;
    will it be possible in bpel. if so how ?
    i would be appreciate any help.
    Thanks,
    Bogi

    Ahhhh - thank you for the clarification.
    Regarding the expansion of variable, is there anything further needed? Reason I ask is, when I use the variable which contains the same string as when I hard code the string in the XPATH query, I do not receive the desired results - I only receive the
    'VENDOR_ADVISORY' results.

  • Problem using views containing xpath expressions with Oracle Forms

    Mark,
    Nice to see you back on the forum answering questions.
    This example is based on the standard purchaseorder schema.
    i registered the schema, created a relational table and then created
    a view using xpath.everything works well and i am able to select the data
    using sql*plus. Now this views is like any other view, when i describe the
    view, i can see the all the data types are valid for the columns and also the lengths.
    Now when i try to base a data block in oracle forms using this view, i get error
    "ORA-24324 - service handle not initialized."
    Whereas if i create another view on top of the first view and then base the data block on this view, it works for me. i described the second view from sql*plus and everything seems to be same for me.
    this is the same behaviour from database 9i r2 and it exists in 10g r1 also.
    Any hints as what might be the problem or you would like me to file a tar for this.
    create or replace view purchaseorder_header_xml
    as
    select  id
           ,extractvalue(xml_data, '/PurchaseOrder/Reference') reference
           ,extractvalue(xml_data, '/PurchaseOrder/Requestor') requestor
           ,extractvalue(xml_data, '/PurchaseOrder/User')      po_user
           ,extractvalue(xml_data, '/PurchaseOrder/CostCenter') costcenter
           ,extractvalue(xml_data, '/PurchaseOrder/SpecialInstructions') spl_instructions
    from tab_xmldata
    create or replace view purchaseorder_header
    as select * from purchaseorder_header_xml
    /Raghu

    Not used Forms for years. However I suspect that Forms is trying to poke around behind the view and not understanding what it sees. I expect you'll need to open a Forms Tar to get to the bottom of this. It also appears that you a workaround which is to create a view on the view by the sound of it..

  • XMLTable with multiple namespaces

    I have a web service that returns the following XML:
    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
       <s:Body>
          <GetGeoLocationIDByWellTagIDResponse xmlns="http://tempuri.org/">
             <GetGeoLocationIDByWellTagIDResult xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                <a:int>9110910</a:int>
             </GetGeoLocationIDByWellTagIDResult>
          </GetGeoLocationIDByWellTagIDResponse>
       </s:Body>
    </s:Envelope>There is the possibility of more than one Int being returned, so I am trying to use xmltable to pull out this information. But I am having some difficulty pulling out the ID node, because (I am guessing) the node is named "a:int". Here is an example of how I am attempting to get this data:
    select x.*
    from
    (select xmltype.createxml('<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
       <s:Body>
          <GetGeoLocationIDByWellTagIDResponse xmlns="http://tempuri.org/">
             <GetGeoLocationIDByWellTagIDResult xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                <a:int>9110910</a:int>
             </GetGeoLocationIDByWellTagIDResult>
          </GetGeoLocationIDByWellTagIDResponse>
       </s:Body>
    </s:Envelope>') xml from dual) t,
    xmltable(
    xmlnamespaces (
    'http://tempuri.org/' as "e",
    'http://schemas.microsoft.com/2003/10/Serialization/Arrays' as "a"),
    '//e:GetGeoLocationIDByWellTagIDResponse/a:GetGeoLocationIDByWellTagIDResult'
    passing t.xml
    columns
    loc_id int path 'a:int'
    ) x;This just returns null.
    How do I references the "a:int" node in the columns clause to correctly get this record back?

    SQL> with sample_data as (
      2    select xmltype('<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
      3     <s:Body>
      4        <GetGeoLocationIDByWellTagIDResponse xmlns="http://tempuri.org/">
      5           <GetGeoLocationIDByWellTagIDResult xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
      6              <a:int>60395867</a:int>
      7              <a:int>7948500</a:int>
      8              <a:int>2282774</a:int>
      9              <a:int>47054172</a:int>
    10              <a:int>47434315</a:int>
    11              <a:int>52639251</a:int>
    12           </GetGeoLocationIDByWellTagIDResult>
    13        </GetGeoLocationIDByWellTagIDResponse>
    14     </s:Body>
    15  </s:Envelope>') xml
    16    from dual
    17  )
    18  select x.loc_id
    19  from sample_data t
    20     , xmltable(
    21         xmlnamespaces (
    22           'http://schemas.microsoft.com/2003/10/Serialization/Arrays' as "a"
    23         , 'http://schemas.xmlsoap.org/soap/envelope/' as "s"
    24         , default 'http://tempuri.org/'
    25         )
    26       , '/s:Envelope/s:Body/GetGeoLocationIDByWellTagIDResponse/GetGeoLocationIDByWellTagIDResult/a:int'
    27         passing t.xml
    28         columns
    29           loc_id number path '.'
    30       ) x
    31  ;
        LOC_ID
      60395867
       7948500
       2282774
      47054172
      47434315
      52639251
    6 rows selected

Maybe you are looking for

  • Addon Start error - The system cannot find the file specified

    All, I am getting the above error when trying to connect an add-on. It's the budget editor in the SDK Samples. Compiled in vb.net, with the installer created from B1DE. The addon installs without a problem. It is only when connecting the add-on in th

  • How to import a CSV file into Appleworks

    Does anybody knows? I tried using ASCII format (everything goes into one cell), Excel (not recognized). Very fustrated, I can do that in 2 seconds with Excel or Open Office. Any help will be really appreciated, must be something really sily

  • ORA-29958 when upgrading 10.2.0.4 to 11.2.0.1 on Solaris 10 using DBUA

    Hello, We are working in our test environment on our upgrade process from 10.2.0.4 to 11.2.0.1. I have cloned a copy of our Production database to support this effort. During the upgrade process using DBUA, we consistently receive an error. The error

  • FDM Audit Report

    Is there an audit report which shows the change made to the POV? I checked the main audit report and the change doesn't show. Effectively I need "changed from/to". Thanks in advance.

  • Problems mit CCMS Monitoring

    Dear community, I've got a question regarding the CCMS Monitoring. I monitor the MTE-Class R3SyslogSpool. I already set an autoreactionmethod about the transaction rz21 and I get an mail when an error aoocurs. But now I've got the problem that I want