XPATH expression to check blank value

Hi,
I have xml File to IDocs scenario. Single xml file will contain the data related to Order Create and Order Change. I have implemented the same using Conditional Interface Determination. Depending upon following conditions the data needs to be sent to either ZORDERS.ORDER05 or ZORDCHG.ORDERS05 IDoc
1. if servicetemplateid = 'SRNonStandard' and myerpordernumber = blank  then create order.
2. if service templateid = 'SRForEvents' and myerpordernumber <> blank then change sales order.
I tried all possible functions of xpath but couldnt determine the interface.
The source file will look something like this. So the first record must be sent to ZORDCHG.ORDERS05 and second record to ZORDERS.ORDERS05
<all>
     <table name="SvcMyServiceRequestNLExpView">
          <record id="1">
               <datacol name="client">010</datacol>
               <datacol name="salesorg">0702</datacol>
               <datacol name="servicetemplateid">SRForEvents</datacol>
               <datacol name="myerpordernumber">123</datacol>
          </record>
          <record id="2">
               <datacol name="client">010</datacol>
               <datacol name="salesorg">0702</datacol>
               <datacol name="servicetemplateid">SRNonStandard</datacol>
               <datacol name="myerpordernumber"></datacol>
          </record>
     </table>
</all>
I have given the following conditions in interface determination
1. for ZORDERS.ORDERS05
(/all/table/record[(datacol/@name = 'servicetemplateid') and (datacol = 'SRNonStandard' or datacol = 'SRForEvents')] EX  AND /all/table/record[(datacol/@name = 'myerpordernumber') and (datacol='')] EX )
2. for ZORDCHG.ORDERS05
(/all/table/record[(datacol/@name = 'servicetemplateid') and (datacol = 'SRNonStandard' or datacol = 'SRForEvents')] EX  AND /all/table/record[(datacol/@name = 'myerpordernumber') and (datacol!='')] EX )
I have tried not(datacol = '') instead of !. I have also tried string-length function but it doesnt determine the interface correctly. i.e if the file contains only Order create Idocs, it will still call orders change interface mapping
The problem is that XPath is not able to compare the blank properly.
Please suggest.
Thanks Nilesh.

Hey Thanks Alex,
Your solution helped me a lot to place the brackets and work with attributes. However, XPATH doesnt determine a blank. But I kept the blank condition in the operator itself(i.e outside xpath) and checked only the attribute in the XPATH and it works fine now. I used the following:
In condition editor one condition to check servicetemplateid attribute using exists. And second condition to check myerpordernumber = blank using equals operator.
For Orders Create
(/all/table/record[(datacol/@name = 'servicetemplateid') and (datacol = 'SRNonStandard' or datacol = 'SRForEvents')] EX  AND /all/table/record/datacol[@name = 'myerpordernumber'] = )
For Orders Change
(/all/table/record[(datacol/@name = 'servicetemplateid') and (datacol = 'SRNonStandard' or datacol = 'SRForEvents')] EX  AND /all/table/record/datacol[@name = 'myerpordernumber'] u2260 )
Thanks Nilesh

Similar Messages

  • Urgent :CHECK BLANK VALUES

    Hi
    I am fetching some data into a date IO but the problem is that some records contain a blank value for that fild.
    So i am using a routine to assign some value to that field based on some logic.
    i have used
    if DATEIO is intial...
    then codn..
    but the code doesnt seems to work.
    Is this the right way to check. or shud i use if DATEIO = '00000000'.

    Hi,
    What you put is correct, but let me review your code:
    Assumptions: You are using the code in update/field routine.
    if comm_structure-date is initial.
    logic......
    endif.
    Cheers,
    Rewards accepted

  • XPath Expression to Check if certain condition does not exists

    Dear Experts,
    I have an interface scenario with this source message structure:
    /Message/Body/Field1
    Body have multiple occurence in the Message, and each Body will have only 1 Field1.
    at the Interface Determination:
    - Interface A:     if the /Message/Body/Field1 = "" exists
    - Interface B:     if the /Message/Body/Field1 = "" does not exists
    I have configured Interface A correctly with the following XPath expression:
    left operator:          /Message/Body[Field1 = ""]
    middle operator:     EX
    right operator:
    Somehow I still could not figured out how to check if /Message/Body/Field1 = "" does not exists.
    I've tried some XPath expression:
    left operator:          /Message/Body[Field1 = ""]
    middle operator:     !=
    right operator:        EX
    (this results in Interface B generated no matter /Message/Body/Field1 = "" exists or not)
    left operator:          /Message/Body[ (count(Field1 = "") = 0) ]
    middle operator:     EX
    right operator:      
    (this results an exception raised at Interface Determination when Message/Body/Field1 = "" does not exists)
    And some other workaround but still no success.
    Any advice would be appreciated.
    Thank you,
    Suwandi C.

    Am I getting you right: You want to route the message one way if there is at least one empty Field1in the message and the other way if there is no empty Field1 present?
    Maybe you could try:
    Left: boolean(/Message/Body[Field1 = '']/
    Operator: =
    Right: true
    Left: boolean(/Message/Body[Field1 = '']/
    Operator: !=
    Right: false
    boolean() should return true if the node-set provided to the function contains at least one node.
    I think you should use single quotes for literals.
    I'm not sure about the slash at the end of the left operator.

  • Regular expression to check a value if it contains a specific word.

    Hi All,
    How can i check if a certain word exists in a value in regular expression ?
    I have an attribute called Race. Race can contain the following:
    White, Non-Hispanic
    Black, Non-Hispanic
    White, Non Hispanic
    Black, Non Hispanic
    White, NonHispanic
    Non-Hispanic, white
    Non Hispanic - black
    What i want is to check if my value contains the word "NON" (NON can be at the beginning, middle or end), if it does, parse it and return it.
    This is what I have, however I want to make sure it covers all cases and not missing anything else
    select REGEXP_SUBSTR(UPPER(trim('Black, Non-Hispanic')), '[NON]+') from dual;Thanks in advance.

    Rooney wrote:
    Could you please explain what are the 2 ones's for ?The two 1 are not really needed for this. It is just taht the syntax requires those parameters when I add the fifth parameter.
    http://docs.oracle.com/cd/E14072_01/server.112/e10592/functions148.htm
    First 1 is where the search starts (same as in substr('Abc',1))
    Second 1 is the number of occurences. Here meaning return the first occurence that was found. Replace it with 2 in my next example to see a (very slight) difference.
    Also 'NON' alone will not cover all cases ?But you don't have non alone. You have regexp with non + upper. The 'i' replaces the upper. Also the output is slightly different. the 'i' version will return the same capitalization as it was found in the original. It depends a little what you want to achieve. And of cause INSTR will give the same info as your version. if the result is > 0 it means NON was found.
    with testdata as (select 'White,Non-Hispanic' str from dual union all
                      select 'Non-White,nOn-Hispanic' str from dual union all
                      select 'White,Hispanic' str from dual
    /* end of test data creation */
    select str,
          REGEXP_SUBSTR(UPPER(TRIM(str)), 'NON') regexp1,
          REGEXP_SUBSTR(str, 'NON',1,1,'i') regexp2,
          instr(upper(str),'NON') instr
    from testdata;
    STR                    REGEXP1                REGEXP2                INSTR
    White,Non-Hispanic     NON                    Non                        7
    Non-White,Non-Hispanic NON                    Non                        1
    White,Hispanic                                                           0

  • 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.

  • 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

  • Extracting node value from XPath Expression in OSB Conditional Branch

    HI All
    While using conditional branch in OSB,i only get an XPath Expression editor to set a variable used to test a condition.
    Now let's say my request is
    <Body>
    <exam:PersonSearchReq xmlns:exam="http://www.example.org">
    <exam:RequestorSSO>James</exam:RequestorSSO>
    </exam:PersonSearchReq>
    </Body>
    I write my XPath expression as :
    ./exam:PersonSearchReq/exam:RequestorSSO/text()
    Now if I test this using the tester application , insted of getting node value 'James' ,i get the entire node element ,i.e
    <exam:RequestorSSO xmlns:exam="http://www.example.org">James</exam:RequestorSSO>
    Please suggest how can i extract the text value.
    Regards,
    Chinmay

    Hi Guys
    Actually it turns out that you need to populate In-Variable to function is correctly.As soon as i entere 'body' in it,it worked fine.
    Thanks
    Chinmay

  • XPath Expression

    Hey Guys...
    Currently I am working on one Xpath expression issue..as described below;
    Its a File to Idoc scenario  ...where in I need to check the two Item level nodes and based on that need to produce the target Idoc. and my souce structure look like this....
    DT_Input
           Header ---    1 to 1
                 H1
                 H2
                 H3
           Item  -
         0 - Unbounded
              Item_1
              Item_2
              Item_3
    Query :  If the Item_1 and Item_3 are not equal AND  Item_1 not equal to blank ...then I need to produce the target Idoc otherwise not!
    Can you please help me out!!!
    Cheers.,
    S

    You could create an advance user defined function.
    fed your function with the 3 values (Item_1 and Item3).
    Inside the function, check the values of Item_1 and Item_3 nodes.
    What is the result of your query? I mean, if your query is meet, Which value do you want to populate in your IDOC?
    You should use this sentence: result.addValue(a[0]). It is supposed a is the value returned by the funcion.
    If you don`t want create the node in the IDOC, use this other one: result.addValue(ResultListCC).
    Regards,
    Carlos

  • XPath expression failed to execute.

    Hi Everybody ,
    I am working  AIA PIP 3.1 for JDE E1.I am facing some errors so that i can't proceed.
    See the log errors as below:
    javax.xml.ws.soap.SOAPFaultException: XPath expression failed to execute. An error occurs while processing the XPath expression; the expression is ora:processXSLT('xsl/Xform_BillOfMaterialsListABM_to_BillOfMaterialsListAXML.xsl',bpws:getVariableData('InitialLoadBillOfMaterialsListReqMsg','InitialLoadBillOfMaterialsList'),bpws:getVariableData('Parameters')). The XPath expression failed to execute; the reason was: oracle.fabric.common.xml.xpath.XPathFunctionException: javax.xml.transform.TransformerException: oramds:/deployed-composites/default/InitialLoadBillOfMaterialsListJDEE1toAgileImpl_rev1.0/xsl/Xform_BillOfMaterialsListABM_to_BillOfMaterialsListAXML.xsl<Line 18, Column 271>: XML-22044: (Error) Extension function error: Error invoking 'lookupXRef':'oracle.tip.xref.exception.RepositoryException: lookup could not find values in column name "AGILE_01" for table name "oramds:/apps/AIAMetaData/xref/ITEM_ITEMID.xref" using reference column name "JDEE1_01" and reference value "731882::M30" Please ensure lookup criteria has a match.'. Check the detailed root cause described in the exception message text and verify that the XPath query is correct.
    Please reply me ASAP,
    Waiting for your response.....
    Regards
    Jyoti Nayak

    Hi,
    Ya i checked the data for same table,but i didn't get any XREF related information in xref_data table.
    Did you mean that, data should already present under AIAFPINST_XREF.Probably xref is meant for storing dynamic value.
    Please check the above error and reply me soon.
    With Regards
    Jyoti Nayak

  • Using the variable ? operator in an XPath Expression

    I'm trying to using the variable operator (?) in an Oracle prepared statement used in a query where clause. Here is the query:
    select xt.APPLICATION_NAME, xt.VERSION, xt.EVENT_TYPE, xt.SENDING_SITE, xt.RECEIVING_SITE, xt.EVENT_ID
          from AUDITED_EVENT_XML_MIN e,
             XMLTable(XMLNAMESPACES('http://gov/va/med/datasharing/audit/endpoint/audit' AS "xae"),
                    '/xae:auditable-event'
                    PASSING e.xml_event_content
                    COLUMNS
                    APPLICATION_NAME VARCHAR2(255) PATH 'xae:application-name',
                    VERSION          VARCHAR2(255) PATH 'xae:version',
                    EVENT_TYPE       VARCHAR2(255) PATH 'xae:event-type',
                    SENDING_SITE     VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.4/HD.2',
                    RECEIVING_SITE   VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.6/HD.2',
                    EVENT_ID         VARCHAR2(255) PATH 'xae:xml-event-content/*/MSH/MSH.10') xt
                where existsNode(E.XML_EVENT_CONTENT, '/xae:auditable-event[xae:event-type=?]','xmlns:xae="http://gov/va/med/datasharing/audit/endpoint/audit"') = 1This code works when the ? is replaced with "aValue". I need to use the ? so that my Java client can pass a variable value into the query.
    Is this a supportable feature or am I doing something wrong?
    I didn't see any examples in the Oracle XML DB Developers Guide where there was a ? in an XPath expression.
    I also tried "?" with the same issue...
    Here is the version info:
    SQL*Plus: Release 11.1.0.6.0 - Production on Mon Sep 10 18:41:55 2012
    Copyright (c) 1982, 2007, Oracle.  All rights reserved.
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing optionsAny assistance would be greatly appreciated.
    Thanks in advance...

    I incorporated this suggestion and it worked very well. Thanks!
    Now I have converted my solution to use a structured index. As such, I want to write the where clauses in terms of column names rather than XPath expressions.
    I hoped it was as simple as changing the code that generates the XPath expression to generate a SQL expression. After making that change, I'm now getting this error:
    Caused by: java.sql.SQLSyntaxErrorException: ORA-00920: invalid relational operator
         at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:91)
         at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
         at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:686)
         at oracle.jdbc.driver.T2CConnection.checkError(T2CConnection.java:617)
         at oracle.jdbc.driver.T2CPreparedStatement.executeForDescribe(T2CPreparedStatement.java:559)
         at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1077)
         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186)
         at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3381)
         at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3425)
         at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1490)
         at gov.va.med.datasharing.audit.dao.jdbc.runner.MapQueryRunner.run(MapQueryRunner.java:47)
         at gov.va.med.datasharing.audit.web.dao.jdbc.AuditableEventsQueryDAOImpl.getAuditableEventsByDate(AuditableEventsQueryDAOImpl.java:150)It seemed to me that if it worked for the XPath expression that it should also work for the SQL expression.
    The static SQL is:
    SELECT PK_ID, EVENT_TYPE, OUTCOME, SENDING_SITE, RECEIVING_SITE, CREATED_TIME, EVENT_ID, PATIENT_ID FROM
      (SELECT rownum as rn, PK_ID, EVENT_TYPE, OUTCOME, SENDING_SITE, RECEIVING_SITE, CREATED_TIME, EVENT_ID, PATIENT_ID FROM
         (SELECT aet.AUDITABLE_EVENT_XML_PK_ID AS PK_ID, xt.EVENT_TYPE, xt.OUTCOME, xt.SENDING_SITE, xt.RECEIVING_SITE, aet.CREATED_TIME as CREATED_TIME, xt.EVENT_ID, xt.PATIENT_ID
            FROM AUDITABLE_EVENT_XML aet,
              XMLTable(XMLNAMESPACES('http://gov/va/med/datasharing/audit/endpoint/audit' AS "xae"),
                '/xae:auditable-event'
                PASSING aet.xml_event_content
                COLUMNS
                EVENT_TYPE       VARCHAR2(255) PATH 'xae:event-type',
                SENDING_SITE     VARCHAR2(255) PATH 'xae:sending-site',
                RECEIVING_SITE   VARCHAR2(255) PATH 'xae:receiving-site',
                EVENT_ID         VARCHAR2(255) PATH 'xae:event-id',
                PATIENT_ID           VARCHAR2(255) PATH 'xae:patient-id',
                OUTCOME                VARCHAR2(255) PATH 'xae:outcome') xt
            WHERE aet.CREATED_TIME BETWEEN ? AND ?
                 AND ?
          ) ORDER BY CREATED_TIME desc
        ) WHERE rn &gt; ? and rn &lt;= ?So I'm thinking that Oracle must perform strong checking in SQL, not allowing the '=' operator to be substituted. If I run this query in Toad, replacing the ? with the SQL, it runs fine...
    Can someone tell me whether or not this is a legal substitution?
    The SQL that runs in Toad is:
    SELECT PK_ID, EVENT_TYPE, OUTCOME, SENDING_SITE, RECEIVING_SITE, CREATED_TIME, EVENT_ID, PATIENT_ID FROM
      (SELECT rownum as rn, PK_ID, EVENT_TYPE, OUTCOME, SENDING_SITE, RECEIVING_SITE, CREATED_TIME, EVENT_ID, PATIENT_ID FROM
         (SELECT aet.AUDITABLE_EVENT_XML_PK_ID AS PK_ID, xt.EVENT_TYPE, xt.OUTCOME, xt.SENDING_SITE, xt.RECEIVING_SITE, aet.CREATED_TIME as CREATED_TIME, xt.EVENT_ID, xt.PATIENT_ID
            FROM AUDITABLE_EVENT_XML aet,
              XMLTable(XMLNAMESPACES('http://gov/va/med/datasharing/audit/endpoint/audit' AS "xae"),
                '/xae:auditable-event'
                PASSING aet.xml_event_content
                COLUMNS
                EVENT_TYPE       VARCHAR2(255) PATH 'xae:event-type',
                SENDING_SITE     VARCHAR2(255) PATH 'xae:sending-site',
                RECEIVING_SITE   VARCHAR2(255) PATH 'xae:receiving-site',
                EVENT_ID         VARCHAR2(255) PATH 'xae:event-id',
                PATIENT_ID         VARCHAR2(255) PATH 'xae:patient-id',
                OUTCOME             VARCHAR2(255) PATH 'xae:outcome') xt
            WHERE aet.CREATED_TIME BETWEEN TO_DATE ('9/19/2011 12:00:01 AM','MM/DD/YYYY HH:MI:SS PM')
                                         AND TO_DATE ('12/20/2012 12:00:00 AM','MM/DD/YYYY HH:MI:SS PM')
                AND (OUTCOME=0 or OUTCOME=1)
          ) ORDER BY CREATED_TIME desc
        ) WHERE rn > 0 and rn <= 5;Any assistance will be appreciated,
    Thanks in advance.

  • XPATH-expressions and namespaces

    I have a xml-file for testing my xpath expression, like this:
    <a>
       <b>
          <c>aaa</c>
             <d>
                <e>111</e>
             </d>
       </b>
       <b>
          <c>bbb</c>
             <d>
                <e>222</e>
             </d>
       </b>
       <b>
          <c>ccc</c>
             <d>
                <e>333</e>
             </d>
       </b>What I want is to get the value of element 'e', based on a check on what the value of element 'c' is. I alway know the value of element 'c'.
    I solve this by using this xpath-expression in my xsl-file:
    <xsl:variable name="xpathTest" select="//e[../preceding-sibling::c = 'bbb']" />This expression should return '222', and it works!!!
    But, when I use the another xml-file with a similar structure, with namespaces, like this:
    <body xsi:type="fkpsoap:FKPSOAPOperationResponse">
       <FKPSOAPOperationResponse>
          <fkpsoap_1:fkrdk178_output_data>
             <fkpsoap_1:fkrdk178_list_cust_information>
                <fkpsoap_1:fkrdk178_list_customerinfo>
                   <fkpsoap_1:fkrdk178_list_variable_code> aaa </fkpsoap_1:fkrdk178_list_variable_code>
                   <fkpsoap_1:fkrdk178_list_value_name>
                      <fkpsoap_1:fkrdk178_list_value_text> 111 </fkpsoap_1:fkrdk178_list_value_text>
                </fkpsoap_1:fkrdk178_list_customerinfo>
                <fkpsoap_1:fkrdk178_list_customerinfo>
                   <fkpsoap_1:fkrdk178_list_variable_code> bbb </fkpsoap_1:fkrdk178_list_variable_code>
                   <fkpsoap_1:fkrdk178_list_value_name>
                      <fkpsoap_1:fkrdk178_list_value_text> 222 </fkpsoap_1:fkrdk178_list_value_text>
                </fkpsoap_1:fkrdk178_list_customerinfo>
                <fkpsoap_1:fkrdk178_list_customerinfo>
                   <fkpsoap_1:fkrdk178_list_variable_code> ccc </fkpsoap_1:fkrdk178_list_variable_code>
                   <fkpsoap_1:fkrdk178_list_value_name>
                      <fkpsoap_1:fkrdk178_list_value_text> 333 </fkpsoap_1:fkrdk178_list_value_text>
                </fkpsoap_1:fkrdk178_list_customerinfo>
             </fkpsoap_1:fkrdk178_list_cust_information>
          </fkpsoap_1:fkrdk178_output_data>
       </FKPSOAPOperationResponse>
    </body>Then the xpath-expression does not work!
    I can easily extract the value of the element similar to the element 'e' in my test-file, but then I will always get the value from the first occurance of 'e', which is '111'.
    Can anyone help me with this?

    Most APIs which let you create XPath objects allow you to create a namespace context and attach it to the XPath object. Your API most likely does too, whatever it is. Then you would just use the prefixes which the namespace context describes in your XPath expression.
    (This namespace context generally maps prefixes to namespace URIs. Remember that the namespace URI is really what the XPath is looking for and the prefix is just a short cut for you to use.)

  • XPath Expression in document definition

    I am trying to use "XPath Expression1" for 894 in the document definition under XPath in order to retrieve invoice number so that, it would be used in BAM but I am not getting successful in putting exact XPath expression for invoice number. I am using as below
    /Transaction-894/Segment-G82/Element-861
    Pls suggest is there any wrong in the XPath?
    Regards,
    Suneel Jakka

    Here is the XSD for which I am trying XPath for the "Element-861" under "Segment-G82"..
    Pls suggest me..
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- Automatically generated by EDIFECS SpecBuilder (http://www.edifecs.com) -->
    <xsd:schema xmlns="http://www.edifecs.com/xdata/200" targetNamespace="http://www.edifecs.com/xdata/200" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0" elementFormDefault="qualified">
         <xsd:annotation>
              <xsd:appinfo>
                   <FileName>C:\Documents and Settings\jakkasun\Desktop\11g\X12_5010_894.ecs</FileName>
                   <InternalID>{0840BE5F-3518-463D-A128-D73D96D4A5D2}</InternalID>
              </xsd:appinfo>
         </xsd:annotation>
         <xsd:element name="Transaction-894" type="Transaction-894"/>
         <xsd:complexType name="Transaction-894">
              <xsd:annotation>
                   <xsd:documentation>This X12 Transaction Set contains the format and establishes the data contents of the Delivery/Return Base Record Transaction Set (894) for use within the context of an Electronic Data Interchange (EDI) environment. The transaction set can be used to enable a Direct Store Delivery (DSD) vendor to communicate the details of a DSD delivery and is to be used during the check-in procedure. </xsd:documentation>
                   <xsd:appinfo>
                        <UNMKey>Full|CodeList|-&lt;Parent Node ID&gt;.&lt;Index&gt;|Composite|-&lt;Node ID&gt;|Element|-&lt;Node ID&gt;|Loop|-&lt;Node ID&gt;|Segment|-&lt;Node ID&gt;|Transaction|-&lt;Node ID&gt;|ReplacementCharacter|_|InternalSeparator|-</UNMKey>
                   </xsd:appinfo>
              </xsd:annotation>
              <xsd:sequence>
                   <xsd:element name="Internal-Properties" type="Internal-Properties" minOccurs="0"/>
                   <xsd:element name="Segment-ST" type="Segment-ST"/>
                   <xsd:element name="Segment-G82" type="Segment-G82"/>
                   <xsd:element name="Segment-N9" type="Segment-N9" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
                   <xsd:element name="Loop-LS" type="Loop-LS" minOccurs="0" nillable="true"/>
                   <xsd:element name="Segment-G72" type="Segment-G72" minOccurs="0" maxOccurs="20" nillable="true"/>
                   <xsd:element name="Segment-G23" type="Segment-G23" minOccurs="0" maxOccurs="20" nillable="true"/>
                   <xsd:element name="Segment-G84" type="Segment-G84"/>
                   <xsd:element name="Segment-G86" type="Segment-G86"/>
                   <xsd:element name="Segment-G85" type="Segment-G85"/>
                   <xsd:element name="Segment-SE" type="Segment-SE"/>
              </xsd:sequence>
              <xsd:attribute name="Type" default="Transaction" type="xsd:string"/>
              <xsd:attribute name="ID" default="894" type="xsd:string"/>
              <xsd:attribute name="Name" default="Delivery/Return Base Record" type="xsd:string"/>
              <xsd:attribute name="XDataVersion" fixed="2.0" type="xsd:string"/>
              <xsd:attribute name="Standard" fixed="X12" use="required" type="xsd:string"/>
              <xsd:attribute name="Version" default="V5010" type="xsd:string"/>
              <xsd:attribute name="GUID" type="GUID"/>
              <xsd:attribute name="CreatedBy" type="xsd:string"/>
              <xsd:attribute name="CreatedDate" type="xsd:dateTime"/>
         </xsd:complexType>
         <xsd:simpleType name="GUID">
              <xsd:restriction base="xsd:string">
                   <xsd:pattern value="\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\}"/>
              </xsd:restriction>
         </xsd:simpleType>
         <xsd:complexType name="EDI-Element-String-Type">
              <xsd:simpleContent>
                   <xsd:extension base="xsd:string">
                        <xsd:attribute name="Type" default="Element" type="xsd:string"/>
                        <xsd:attribute name="EDIDataType" type="xsd:string"/>
                        <xsd:attribute name="Macro" type="xsd:string" use="optional"/>
                        <xsd:attribute name="ApplicationInfo" type="xsd:string"/>
                        <xsd:attribute name="ID" type="xsd:string"/>
                        <xsd:attribute name="Name" type="xsd:string"/>
                   </xsd:extension>
              </xsd:simpleContent>
         </xsd:complexType>
         <xsd:complexType name="EDI-Element-Integer-Type">
              <xsd:simpleContent>
                   <xsd:extension base="xsd:integer">
                        <xsd:attribute name="Type" default="Element" type="xsd:string"/>
                        <xsd:attribute name="EDIDataType" type="xsd:string"/>
                        <xsd:attribute name="Macro" type="xsd:string" use="optional"/>
                        <xsd:attribute name="ApplicationInfo" type="xsd:string"/>
                        <xsd:attribute name="ID" type="xsd:string"/>
                        <xsd:attribute name="Name" type="xsd:string"/>
                   </xsd:extension>
              </xsd:simpleContent>
         </xsd:complexType>
         <xsd:complexType name="EDI-Element-Decimal-Type">
              <xsd:simpleContent>
                   <xsd:extension base="xsd:decimal">
                        <xsd:attribute name="Type" default="Element" type="xsd:string"/>
                        <xsd:attribute name="EDIDataType" type="xsd:string"/>
                        <xsd:attribute name="Macro" type="xsd:string" use="optional"/>
                        <xsd:attribute name="ApplicationInfo" type="xsd:string"/>
                        <xsd:attribute name="ID" type="xsd:string"/>
                        <xsd:attribute name="Name" type="xsd:string"/>
                   </xsd:extension>
              </xsd:simpleContent>
         </xsd:complexType>
         <xsd:complexType name="EDI-Element-hexBinary-Type">
              <xsd:simpleContent>
                   <xsd:extension base="xsd:hexBinary">
                        <xsd:attribute name="Type" default="Element" type="xsd:string"/>
                        <xsd:attribute name="EDIDataType" type="xsd:string"/>
                        <xsd:attribute name="Macro" type="xsd:string" use="optional"/>
                        <xsd:attribute name="ApplicationInfo" type="xsd:string"/>
                        <xsd:attribute name="ID" type="xsd:string"/>
                        <xsd:attribute name="Name" type="xsd:string"/>
                   </xsd:extension>
              </xsd:simpleContent>
         </xsd:complexType>
         <xsd:complexType name="EDI-Element-base64Binary-Type">
              <xsd:simpleContent>
                   <xsd:extension base="xsd:base64Binary">
                        <xsd:attribute name="Type" default="Element" type="xsd:string"/>
                        <xsd:attribute name="EDIDataType" type="xsd:string"/>
                        <xsd:attribute name="Macro" type="xsd:string" use="optional"/>
                        <xsd:attribute name="ApplicationInfo" type="xsd:string"/>
                        <xsd:attribute name="ID" type="xsd:string"/>
                        <xsd:attribute name="Name" type="xsd:string"/>
                   </xsd:extension>
              </xsd:simpleContent>
         </xsd:complexType>
         <xsd:complexType name="EDI-Element-Any-Type">
              <xsd:simpleContent>
                   <xsd:extension base="xsd:string">
                        <xsd:attribute name="Type" default="Element" type="xsd:string"/>
                        <xsd:attribute name="EDIDataType" type="xsd:string"/>
                        <xsd:attribute name="Macro" type="xsd:string" use="optional"/>
                        <xsd:attribute name="ApplicationInfo" type="xsd:string"/>
                        <xsd:attribute name="ID" type="xsd:string"/>
                        <xsd:attribute name="Name" type="xsd:string"/>
                   </xsd:extension>
              </xsd:simpleContent>
         </xsd:complexType>
         <xsd:complexType name="Internal-Properties">
              <xsd:sequence>
                   <xsd:element name="Data-Structure" type="Data-Structure" minOccurs="0" maxOccurs="unbounded"/>
              </xsd:sequence>
         </xsd:complexType>
         <xsd:complexType name="Data-Structure">
              <xsd:sequence>
                   <xsd:element name="Lookup" type="Lookup" minOccurs="0" maxOccurs="unbounded"/>
                   <xsd:element name="Property" type="Property" minOccurs="0" maxOccurs="unbounded"/>
                   <xsd:element name="Data-Structure" type="Data-Structure" minOccurs="0" maxOccurs="unbounded"/>
              </xsd:sequence>
              <xsd:attribute name="Name" type="xsd:string"/>
              <xsd:attribute name="GUID" type="GUID"/>
         </xsd:complexType>
         <xsd:complexType name="Lookup">
              <xsd:simpleContent>
                   <xsd:extension base="xsd:string">
                        <xsd:attribute name="Name" type="xsd:string"/>
                   </xsd:extension>
              </xsd:simpleContent>
         </xsd:complexType>
         <xsd:complexType name="Property">
              <xsd:simpleContent>
                   <xsd:extension base="xsd:string">
                        <xsd:attribute name="Name" type="xsd:string"/>
                   </xsd:extension>
              </xsd:simpleContent>
         </xsd:complexType>
         <xsd:complexType name="Segment-ST">
              <xsd:annotation>
                   <xsd:documentation>To indicate the start of a transaction set and to assign a control number</xsd:documentation>
              </xsd:annotation>
              <xsd:sequence>
                   <xsd:element name="Element-143" type="Element-143"/>
                   <xsd:element name="Element-329" type="Element-329"/>
                   <xsd:element name="Element-1705" type="Element-1705" minOccurs="0" nillable="true"/>
              </xsd:sequence>
              <xsd:attribute name="Type" default="Segment" type="xsd:string"/>
              <xsd:attribute name="ID" default="ST" type="xsd:string"/>
              <xsd:attribute name="Name" default="Transaction Set Header" type="xsd:string"/>
         </xsd:complexType>
         <xsd:complexType name="Element-143">
              <xsd:annotation>
                   <xsd:documentation>Code uniquely identifying a Transaction Set </xsd:documentation>
              </xsd:annotation>
              <xsd:simpleContent>
                   <xsd:restriction base="EDI-Element-String-Type">
                        <xsd:enumeration value="100"/>
                        <xsd:enumeration value="101"/>
                        <xsd:enumeration value="102"/>
                        <xsd:enumeration value="103"/>
                        <xsd:enumeration value="104"/>
                        <xsd:enumeration value="105"/>
                        <xsd:enumeration value="106"/>
                        <xsd:enumeration value="107"/>
                        <xsd:enumeration value="108"/>
                        <xsd:enumeration value="109"/>
                        <xsd:enumeration value="110"/>
                        <xsd:enumeration value="111"/>
                        <xsd:enumeration value="112"/>
                        <xsd:enumeration value="113"/>
                        <xsd:enumeration value="120"/>
                        <xsd:enumeration value="121"/>
                        <xsd:enumeration value="124"/>
                        <xsd:enumeration value="125"/>
                        <xsd:enumeration value="126"/>
                        <xsd:enumeration value="127"/>
                        <xsd:enumeration value="128"/>
                        <xsd:enumeration value="129"/>
                        <xsd:enumeration value="130"/>
                        <xsd:enumeration value="131"/>
                        <xsd:enumeration value="132"/>
                        <xsd:enumeration value="133"/>
                        <xsd:enumeration value="135"/>
                        <xsd:enumeration value="138"/>
                        <xsd:enumeration value="139"/>
                        <xsd:enumeration value="140"/>
                        <xsd:enumeration value="141"/>
                        <xsd:enumeration value="142"/>
                        <xsd:enumeration value="143"/>
                        <xsd:enumeration value="144"/>
                        <xsd:enumeration value="146"/>
                        <xsd:enumeration value="147"/>
                        <xsd:enumeration value="148"/>
                        <xsd:enumeration value="149"/>
                        <xsd:enumeration value="150"/>
                        <xsd:enumeration value="151"/>
                        <xsd:enumeration value="152"/>
                        <xsd:enumeration value="153"/>
                        <xsd:enumeration value="154"/>
                        <xsd:enumeration value="155"/>
                        <xsd:enumeration value="157"/>
                        <xsd:enumeration value="158"/>
                        <xsd:enumeration value="159"/>
                        <xsd:enumeration value="160"/>
                        <xsd:enumeration value="161"/>
                        <xsd:enumeration value="163"/>
                        <xsd:enumeration value="170"/>
                        <xsd:enumeration value="175"/>
                        <xsd:enumeration value="176"/>
                        <xsd:enumeration value="179"/>
                        <xsd:enumeration value="180"/>
                        <xsd:enumeration value="185"/>
                        <xsd:enumeration value="186"/>
                        <xsd:enumeration value="187"/>
                        <xsd:enumeration value="188"/>
                        <xsd:enumeration value="189"/>
                        <xsd:enumeration value="190"/>
                        <xsd:enumeration value="191"/>
                        <xsd:enumeration value="194"/>
                        <xsd:enumeration value="195"/>
                        <xsd:enumeration value="196"/>
                        <xsd:enumeration value="197"/>
                        <xsd:enumeration value="198"/>
                        <xsd:enumeration value="199"/>
                        <xsd:enumeration value="200"/>
                        <xsd:enumeration value="201"/>
                        <xsd:enumeration value="202"/>
                        <xsd:enumeration value="203"/>
                        <xsd:enumeration value="204"/>
                        <xsd:enumeration value="205"/>
                        <xsd:enumeration value="206"/>
                        <xsd:enumeration value="210"/>
                        <xsd:enumeration value="211"/>
                        <xsd:enumeration value="212"/>
                        <xsd:enumeration value="213"/>
                        <xsd:enumeration value="214"/>
                        <xsd:enumeration value="215"/>
                        <xsd:enumeration value="216"/>
                        <xsd:enumeration value="217"/>
                        <xsd:enumeration value="219"/>
                        <xsd:enumeration value="220"/>
                        <xsd:enumeration value="222"/>
                        <xsd:enumeration value="223"/>
                        <xsd:enumeration value="224"/>
                        <xsd:enumeration value="225"/>
                        <xsd:enumeration value="227"/>
                        <xsd:enumeration value="228"/>
                        <xsd:enumeration value="240"/>
                        <xsd:enumeration value="242"/>
                        <xsd:enumeration value="244"/>
                        <xsd:enumeration value="245"/>
                        <xsd:enumeration value="248"/>
                        <xsd:enumeration value="249"/>
                        <xsd:enumeration value="250"/>
                        <xsd:enumeration value="251"/>
                        <xsd:enumeration value="252"/>
                        <xsd:enumeration value="255"/>
                        <xsd:enumeration value="256"/>
                        <xsd:enumeration value="259"/>
                        <xsd:enumeration value="260"/>
                        <xsd:enumeration value="261"/>
                        <xsd:enumeration value="262"/>
                        <xsd:enumeration value="263"/>
                        <xsd:enumeration value="264"/>
                        <xsd:enumeration value="265"/>
                        <xsd:enumeration value="266"/>
                        <xsd:enumeration value="267"/>
                        <xsd:enumeration value="268"/>
                        <xsd:enumeration value="269"/>
                        <xsd:enumeration value="270"/>
                        <xsd:enumeration value="271"/>
                        <xsd:enumeration value="272"/>
                        <xsd:enumeration value="273"/>
                        <xsd:enumeration value="274"/>
                        <xsd:enumeration value="275"/>
                        <xsd:enumeration value="276"/>
                        <xsd:enumeration value="277"/>
                        <xsd:enumeration value="278"/>
                        <xsd:enumeration value="280"/>
                        <xsd:enumeration value="283"/>
                        <xsd:enumeration value="284"/>
                        <xsd:enumeration value="285"/>
                        <xsd:enumeration value="286"/>
                        <xsd:enumeration value="288"/>
                        <xsd:enumeration value="290"/>
                        <xsd:enumeration value="300"/>
                        <xsd:enumeration value="301"/>
                        <xsd:enumeration value="303"/>
                        <xsd:enumeration value="304"/>
                        <xsd:enumeration value="309"/>
                        <xsd:enumeration value="310"/>
                        <xsd:enumeration value="311"/>
                        <xsd:enumeration value="312"/>
                        <xsd:enumeration value="313"/>
                        <xsd:enumeration value="315"/>
                        <xsd:enumeration value="317"/>
                        <xsd:enumeration value="319"/>
                        <xsd:enumeration value="322"/>
                        <xsd:enumeration value="323"/>
                        <xsd:enumeration value="324"/>
                        <xsd:enumeration value="325"/>
                        <xsd:enumeration value="326"/>
                        <xsd:enumeration value="350"/>
                        <xsd:enumeration value="352"/>
                        <xsd:enumeration value="353"/>
                        <xsd:enumeration value="354"/>
                        <xsd:enumeration value="355"/>
                        <xsd:enumeration value="356"/>
                        <xsd:enumeration value="357"/>
                        <xsd:enumeration value="358"/>
                        <xsd:enumeration value="361"/>
                        <xsd:enumeration value="362"/>
                        <xsd:enumeration value="404"/>
                        <xsd:enumeration value="410"/>
                        <xsd:enumeration value="412"/>
                        <xsd:enumeration value="414"/>
                        <xsd:enumeration value="417"/>
                        <xsd:enumeration value="418"/>
                        <xsd:enumeration value="419"/>
                        <xsd:enumeration value="420"/>
                        <xsd:enumeration value="421"/>
                        <xsd:enumeration value="422"/>
                        <xsd:enumeration value="423"/>
                        <xsd:enumeration value="424"/>
                        <xsd:enumeration value="425"/>
                        <xsd:enumeration value="426"/>
                        <xsd:enumeration value="429"/>
                        <xsd:enumeration value="431"/>
                        <xsd:enumeration value="432"/>
                        <xsd:enumeration value="433"/>
                        <xsd:enumeration value="434"/>
                        <xsd:enumeration value="435"/>
                        <xsd:enumeration value="436"/>
                        <xsd:enumeration value="437"/>
                        <xsd:enumeration value="440"/>
                        <xsd:enumeration value="451"/>
                        <xsd:enumeration value="452"/>
                        <xsd:enumeration value="453"/>
                        <xsd:enumeration value="455"/>
                        <xsd:enumeration value="456"/>
                        <xsd:enumeration value="460"/>
                        <xsd:enumeration value="463"/>
                        <xsd:enumeration value="466"/>
                        <xsd:enumeration value="468"/>
                        <xsd:enumeration value="470"/>
                        <xsd:enumeration value="475"/>
                        <xsd:enumeration value="485"/>
                        <xsd:enumeration value="486"/>
                        <xsd:enumeration value="490"/>
                        <xsd:enumeration value="492"/>
                        <xsd:enumeration value="494"/>
                        <xsd:enumeration value="500"/>
                        <xsd:enumeration value="501"/>
                        <xsd:enumeration value="503"/>
                        <xsd:enumeration value="504"/>
                        <xsd:enumeration value="511"/>
                        <xsd:enumeration value="517"/>
                        <xsd:enumeration value="521"/>
                        <xsd:enumeration value="527"/>
                        <xsd:enumeration value="536"/>
                        <xsd:enumeration value="540"/>
                        <xsd:enumeration value="561"/>
                        <xsd:enumeration value="567"/>
                        <xsd:enumeration value="568"/>
                        <xsd:enumeration value="601"/>
                        <xsd:enumeration value="602"/>
                        <xsd:enumeration value="620"/>
                        <xsd:enumeration value="625"/>
                        <xsd:enumeration value="650"/>
                        <xsd:enumeration value="715"/>
                        <xsd:enumeration value="753"/>
                        <xsd:enumeration value="754"/>
                        <xsd:enumeration value="805"/>
                        <xsd:enumeration value="806"/>
                        <xsd:enumeration value="810"/>
                        <xsd:enumeration value="811"/>
                        <xsd:enumeration value="812"/>
                        <xsd:enumeration value="813"/>
                        <xsd:enumeration value="814"/>
                        <xsd:enumeration value="815"/>
                        <xsd:enumeration value="816"/>
                        <xsd:enumeration value="818"/>
                        <xsd:enumeration value="819"/>
                        <xsd:enumeration value="820"/>
                        <xsd:enumeration value="821"/>
                        <xsd:enumeration value="822"/>
                        <xsd:enumeration value="823"/>
                        <xsd:enumeration value="824"/>
                        <xsd:enumeration value="826"/>
                        <xsd:enumeration value="827"/>
                        <xsd:enumeration value="828"/>
                        <xsd:enumeration value="829"/>
                        <xsd:enumeration value="830"/>
                        <xsd:enumeration value="831"/>
                        <xsd:enumeration value="832"/>
                        <xsd:enumeration value="833"/>
                        <xsd:enumeration value="834"/>
                        <xsd:enumeration value="835"/>
                        <xsd:enumeration value="836"/>
                        <xsd:enumeration value="837"/>
                        <xsd:enumeration value="838"/>
                        <xsd:enumeration value="839"/>
                        <xsd:enumeration value="840"/>
                        <xsd:enumeration value="841"/>
                        <xsd:enumeration value="842"/>
                        <xsd:enumeration value="843"/>
                        <xsd:enumeration value="844"/>
                        <xsd:enumeration value="845"/>
                        <xsd:enumeration value="846"/>
                        <xsd:enumeration value="847"/>
                        <xsd:enumeration value="848"/>
                        <xsd:enumeration value="849"/>
                        <xsd:enumeration value="850"/>
                        <xsd:enumeration value="851"/>
                        <xsd:enumeration value="852"/>
                        <xsd:enumeration value="853"/>
                        <xsd:enumeration value="854"/>
                        <xsd:enumeration value="855"/>
                        <xsd:enumeration value="856"/>
                        <xsd:enumeration value="857"/>
                        <xsd:enumeration value="858"/>
                        <xsd:enumeration value="859"/>
                        <xsd:enumeration value="860"/>
                        <xsd:enumeration value="861"/>
                        <xsd:enumeration value="862"/>
                        <xsd:enumeration value="863"/>
                        <xsd:enumeration value="864"/>
                        <xsd:enumeration value="865"/>
                        <xsd:enumeration value="866"/>
                        <xsd:enumeration value="867"/>
                        <xsd:enumeration value="868"/>
                        <xsd:enumeration value="869"/>
                        <xsd:enumeration value="870"/>
                        <xsd:enumeration value="871"/>
                        <xsd:enumeration value="872"/>
                        <xsd:enumeration value="873"/>
                        <xsd:enumeration value="874"/>
                        <xsd:enumeration value="875"/>
                        <xsd:enumeration value="876"/>
                        <xsd:enumeration value="877"/>
                        <xsd:enumeration value="878"/>
                        <xsd:enumeration value="879"/>
                        <xsd:enumeration value="880"/>
                        <xsd:enumeration value="881"/>
                        <xsd:enumeration value="882"/>
                        <xsd:enumeration value="883"/>
                        <xsd:enumeration value="884"/>
                        <xsd:enumeration value="885"/>
                        <xsd:enumeration value="886"/>
                        <xsd:enumeration value="887"/>
                        <xsd:enumeration value="888"/>
                        <xsd:enumeration value="889"/>
                        <xsd:enumeration value="891"/>
                        <xsd:enumeration value="893"/>
                        <xsd:enumeration value="894"/>
                        <xsd:enumeration value="895"/>
                        <xsd:enumeration value="896"/>
                        <xsd:enumeration value="920"/>
                        <xsd:enumeration value="924"/>
                        <xsd:enumeration value="925"/>
                        <xsd:enumeration value="926"/>
                        <xsd:enumeration value="928"/>
                        <xsd:enumeration value="940"/>
                        <xsd:enumeration value="943"/>
                        <xsd:enumeration value="944"/>
                        <xsd:enumeration value="945"/>
                        <xsd:enumeration value="947"/>
                        <xsd:enumeration value="980"/>
                        <xsd:enumeration value="990"/>
                        <xsd:enumeration value="993"/>
                        <xsd:enumeration value="996"/>
                        <xsd:enumeration value="997"/>
                        <xsd:enumeration value="998"/>
                        <xsd:enumeration value="999"/>
                        <xsd:attribute name="EDIDataType" fixed="ID" type="xsd:string"/>
                        <xsd:attribute name="ID" fixed="143" type="xsd:string"/>
                        <xsd:attribute name="Name" fixed="Transaction Set Identifier Code" type="xsd:string"/>
                   </xsd:restriction>
              </xsd:simpleContent>
         </xsd:complexType>
         <xsd:complexType name="Element-329">
              <xsd:annotation>
                   <xsd:documentation>Identifying control number that must be unique within the transaction set functional group assigned by the originator for a transaction set </xsd:documentation>
              </xsd:annotation>
              <xsd:simpleContent>
                   <xsd:restriction base="EDI-Element-String-Type">
                        <xsd:minLength value="4"/>
                        <xsd:maxLength value="9"/>
                        <xsd:attribute name="EDIDataType" fixed="AN" type="xsd:string"/>
                        <xsd:attribute name="ID" fixed="329" type="xsd:string"/>
                        <xsd:attribute name="Name" fixed="Transaction Set Control Number" type="xsd:string"/>
                   </xsd:restriction>
              </xsd:simpleContent>
         </xsd:complexType>
         <xsd:complexType name="Element-1705">
              <xsd:annotation>
                   <xsd:documentation>Reference assigned to identify Implementation Convention </xsd:documentation>
              </xsd:annotation>
              <xsd:simpleContent>
                   <xsd:restriction base="EDI-Element-String-Type">
                        <xsd:minLength value="1"/>
                        <xsd:maxLength value="35"/>
                        <xsd:attribute name="EDIDataType" fixed="AN" type="xsd:string"/>
                        <xsd:attribute name="ID" fixed="1705" type="xsd:string"/>
                        <xsd:attribute name="Name" fixed="Implementation Convention Reference" type="xsd:string"/>
                   </xsd:restriction>
              </xsd:simpleContent>
         </xsd:complexType>
         <xsd:complexType name="Segment-G82">
              <xsd:annotation>
                   <xsd:documentation>To transmit identifying numbers, dates, and other basic data relating to the transaction set</xsd:documentation>
              </xsd:annotation>
              <xsd:sequence>
                   <xsd:element name="Element-478" type="Element-478"/>
                   <xsd:element name="Element-861" type="Element-861"/>
                   <xsd:element name="Element-860" type="Element-860"/>
    Regards,
    Suneel Jakka

  • Receiver determination - Xpath expression problem with count

    I am working with a scenario where I pick up records from a JDBC connection and if the number of records I pick up is less than a certain number I want to call a webservice.  If it is greater than the number I want to write out a file to be processed by a different process on the receiving end.  I have created the receiver determination condition with the following conditions:
    (/p1:MT_HOG_Data/row[count(row) > 3] EX)
    (/p1:MT_HOG_Data/row[count(row) <= 3] EX)
    The integration is always processing the second condition no matter how many records come in.  I have tried with and without the multiline option.  Can anyone help with this?
    I have searched through the forum and checked the following links without any resolution:
    http://wiki.sdn.sap.com/wiki/display/XI/XpathConditioninReceiverDetermination
    http://help.sap.com/saphelp_nwpi71/helpdata/EN/ab/13bf7191e73a4fb3560e767a2525fd/frameset.htm
    /people/shabarish.vijayakumar/blog/2006/06/07/customise-your-xpath-expressions-in-receiver-determination
    I can't find any examples where a count of records is checked in the expression editor.  Thanks in advance for any help.

    You can not use the EX operator in that case, because that is used only for node existence checks, not for value checks.
    Do you have a row number in your structure ? Then you could write the xpath expression with that counter tag and value
    Example: you want to send to receiver A if count > 3, else to B:
    you set  /rowNumber EQUAL 4 for sender A
    and /rowNumber NOT EQUAL 4 for sender B
    The condition is applied to the whole document. If one of the node/values are true for that condition, then the whole condition is set to true.
    Problem with that is that the second condition also will be true because nodes for that condition will be found
    better would be to have a rowcount tag in the structure. If that is not possible, you can use the "Enhanced Receiver determination" where you can define a mapping which determines the receivers. There you can do anything complicated you want.
    CSY

  • XPath Expression at Condition Editor in Receiver Determination

    Hi,
      I have a fixed length flat file coming in into which I have to look at the first line's 4th to 7th positions. Based on that if it is "1234" then I need to route it to the receiver else I will ignore in the receiver determination.
    Example input file -
    M 0123456789ABCDEFGHIJKL
    PR0123456789JIDFJDIFJD0244
    PA0123456789JFDJF9384384K
    We have module configuration where we are converting this to a line value pair something like this -
    <?xml version="1.0" encoding="utf-8"?>
    <ns:GMTLog xmlns:ns="http://sap.com/xi/GMStoreConnectivity">
        <Line>
            <Value>M 0123456789ABCDEFGHIJKL
            </Value>
         </Line>
          <Line>
            <Value>PR0123456789JIDFJDIFJD0244
            </Value>
          </Line>
           <Line>
            <Value>PA0123456789JFDJF9384384K
            </Value>
          </Line>
    </ns:GMTLog>
    When I tried to test my xpath in xpath tester it is working fine with the below xpath expressions -
    1. /ns:GMTLog/Line[Value][1] --> This returned the first record completely
    2. substring(/ns:GMTLog/Line[Value][1], 4, 4) --> This returned exactly what I am expecting "1234"
    But the above 2 are not working in condition editor.
    May I know the exact xpath expression to be used in this case to route the message to receiver when 4th to 7th position is "1234".
    Thanks a lot in advance.
    Regards,
    Sarat

    Good day. Can I please have some clarity on what I need to correct on my Receiver expression test.
    For the number of instances of the Summary segment, I am required to identify and test the Summary amount of SUMME if this is more than 5.00 (a currency amount). SUMME is a string so I thought I should convert this to a "number" value to test it.
    Also ensuring that SUMME is checked when the SUMID is equal to 011.
    Now I hope part of my solution below is correct, but the test of the field value is not being done.
    Please help.

  • x:forEach using expressions inside the select value

    Hey everyone. I am trying to use a <c:include> statement to include a jsp file multiple times. The included file parses and processes an XML file but I want to be able to pass in a string representing the XPath to select the elements I want to process. However the <x:foreach> does not allow expressions for the select value. Is there a way around this or a better way to do it? Thanks!
    John

    Sorry maybe I don't quite understand because I can't get this to work.
    This is the parent file code:
    <jsp:include page="includes/XMLParse/traveltimesMilwaukee.jsp" >
        <jsp:param name="select" value="Route[ID>999]" />
    </jsp:include>And this is the called file code where I am trying to use the path:
    <x:forEach var="r"  select="$dom/WisDotTrafficData/Routes/$param:select">This is the most pertinent error:
    javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Error evaluating XPath expression "/WisDotTrafficData/Routes/$param:select": javax.xml.transform.TransformerException: A location step was expected following the '/' or '//' token.Below will be the whole error page but I want to put some comments right here. I also tried without the second $ but that didn't work - the loop never executed. I can't get the JSTL specs to load right now so I couldn't check those out but do you have any other suggestions or maybe you see what my mistake is? Thanks again!
    type Exception report
    message
    description The server encountered an internal error () that prevented it from fulfilling this request.
    exception
    org.apache.jasper.JasperException: Exception in JSP: /milwaukee/traveltimes.jsp:86
    83:                     </tr>
    84:                     <tr VALIGN="TOP">
    85:                       <td>
    86:                         <jsp:include page="includes/XMLParse/traveltimesMilwaukee.jsp" >
    87:                           <jsp:param name="select" value="Route[ID>999]" />
    88:                         </jsp:include>
    89:                       </td>
    Stacktrace:
         org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
         org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
         org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
         org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause
    org.apache.jasper.JasperException: Exception in JSP: /milwaukee/includes/XMLParse/traveltimesMilwaukee.jsp:14
    11:        on the first iteration and not on further iterations --%>
    12:   <c:set var="alreadyPrinted" value="0" />
    13:
    14:   <x:forEach var="r"  select="$dom/WisDotTrafficData/Routes/$param:select">
    15:
    16:     <%-- Prints the header if it has not been printed already --%>
    17:     <c:if test="${alreadyPrinted == '0'}" >
    Stacktrace:
         org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
         org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
         org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
         org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
         org.apache.jsp.milwaukee.traveltimes_jsp._jspService(traveltimes_jsp.java:314)
         org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
         org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
         org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause
    javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Error evaluating XPath expression "/WisDotTrafficData/Routes/$param:select": javax.xml.transform.TransformerException: A location step was expected following the '/' or '//' token.
         org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:839)
         org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:776)
         org.apache.jsp.milwaukee.includes.XMLParse.traveltimesMilwaukee_jsp._jspService(traveltimesMilwaukee_jsp.java:254)
         org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
         org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
         org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
         org.apache.jsp.milwaukee.traveltimes_jsp._jspService(traveltimes_jsp.java:314)
         org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
         org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
         org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause
    javax.xml.transform.TransformerException: A location step was expected following the '/' or '//' token.
         org.apache.xpath.compiler.XPathParser.error(XPathParser.java:608)
         org.apache.xpath.compiler.XPathParser.RelativeLocationPath(XPathParser.java:1637)
         org.apache.xpath.compiler.XPathParser.LocationPath(XPathParser.java:1595)
         org.apache.xpath.compiler.XPathParser.PathExpr(XPathParser.java:1315)
         org.apache.xpath.compiler.XPathParser.UnionExpr(XPathParser.java:1234)
         org.apache.xpath.compiler.XPathParser.UnaryExpr(XPathParser.java:1140)
         org.apache.xpath.compiler.XPathParser.MultiplicativeExpr(XPathParser.java:1061)
         org.apache.xpath.compiler.XPathParser.AdditiveExpr(XPathParser.java:1003)
         org.apache.xpath.compiler.XPathParser.RelationalExpr(XPathParser.java:928)
         org.apache.xpath.compiler.XPathParser.EqualityExpr(XPathParser.java:868)
         org.apache.xpath.compiler.XPathParser.AndExpr(XPathParser.java:832)
         org.apache.xpath.compiler.XPathParser.OrExpr(XPathParser.java:805)
         org.apache.xpath.compiler.XPathParser.Expr(XPathParser.java:788)
         org.apache.xpath.compiler.XPathParser.initXPath(XPathParser.java:127)
         org.apache.xpath.XPath.<init>(XPath.java:176)
         org.apache.taglibs.standard.tag.common.xml.JSTLXPathAPI.eval(JSTLXPathAPI.java:285)
         org.apache.taglibs.standard.tag.common.xml.XPathUtil.selectNodes(XPathUtil.java:527)
         org.apache.taglibs.standard.tag.common.xml.ForEachTag.prepare(ForEachTag.java:50)
         javax.servlet.jsp.jstl.core.LoopTagSupport.doStartTag(LoopTagSupport.java:227)
         org.apache.jsp.milwaukee.includes.XMLParse.traveltimesMilwaukee_jsp._jspService(traveltimesMilwaukee_jsp.java:102)
         org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
         org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
         org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
         org.apache.jsp.milwaukee.traveltimes_jsp._jspService(traveltimes_jsp.java:314)
         org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
         org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
         org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

Maybe you are looking for