Loop through xsd tag in BPEL

I have a XSD with 10 line items and based on a condition I need to filter out the Line Items.. Once the line items are filtered out, then only it should go to the next level of logic.
Shall I use "While" process activity? Will it go through all the line items and then go to the next node or it will check just one line item, check the condition and go to the next node.
Please suggest asap.

Hi Anne,
Thanks for the response. I have actaully built the XPATH, please verify it ..
This is the XML I have:
<?xml version="1.0" encoding="UTF-8"?>
<PO>
<doc_type>New</doc_type>
<order_no>12345</order_no>
<PODetaill>
<item>String</item>
<physical_location_type>A</physical_location_type>
<physical_location>1234567899</physical_location>
<unit_cost>3</unit_cost>
<origin_country_id>01</origin_country_id>
<latest_ship_date>
<ribdate:year>0</ribdate:year>
<ribdate:month>0</ribdate:month>
<ribdate:day>0</ribdate:day>
<ribdate:hour>0</ribdate:hour>
<ribdate:minute>0</ribdate:minute>
<ribdate:second>0</ribdate:second>
</latest_ship_date>
<pickup_loc>NC</pickup_loc>
<pickup_no>123</pickup_no>
<cost_source>S</cost_source>
</PODetail>
</PO>
Filtering Condition:
Items with PODetail.Physical_location_type ='A' should be processed further, others should be filtered out.
Remove operation with modified XPATH :
<bpelx:remove>
<bpelx:target variable="inputvariable" part="payload"
query="/ns1:PO/ns1:physical_location_type !='A'" />
</bpelx:remove>
Please let me know if I am doing the right thing..
Thanks..

Similar Messages

  • How to loop through xml records from file without ROW , /ROW tags?

    I am using dbms_XMLSave.insertXML procedure to insert xml formated record from file. MY xmlformated records does not have open and close ROW tags. I have multiple records in the file.How can I loop through without <ROW>,</ROW> tags?

    I am using dbms_XMLSave.insertXML procedure to insert xml formated record from file. MY xmlformated records does not have open and close ROW tags. I have multiple records in the file.How can I loop through without <ROW>,</ROW> tags?

  • Loop through elements within nested:iterate tag using javascript

    Hello,
    I would like to loop through the adjustedLineItems list and set the checkbox values to true on click of a select all button.
    I am getting the error document.all['adjustedLineItems.selected'] is null or not an object
    however it works if I manually substitute values for i within the function
    document.all['adjustedLineItems[0].selected'].checked=true;
    document.all['adjustedLineItems[1].selected'].checked=true;
    document.all['adjustedLineItems[2].selected'].checked=true;
    Could someone please help me do this via a for loop?
    Thanks
    <nested:iterate name="invoiceForm" property="adjustedLineItems" id="adjli" type="com.bt.lex.common.lineItem.beans.LineItemDetailBean" indexId="idxadjli">
              <tr>
                   <td class="dataLeft"><nested:checkbox property="selected"/></td>
                   <td class="dataLeft"><nested:write property="liNumber"/></td>
              </tr>
    </nested:iterate>
    <script type="text/javascript">
    function onclick_all(ctl) {
         var checkFlag = "false";
         var count = document.all.numOfAdjustedLIs.value;
         var i = 0;
         //alert(count);
         if(ctl.checked)
              if(checkFlag=="false")
                   for (i = 0; i <count; i++)
                        document.all['adjustedLineItems[i].selected'].checked=true;
                   checkFlag = "true";
    </script>

    Its got nothing to do with nested iterate tags :). However,
    document.all['adjustedLineItems.selected'].checked=true;
    The variable 'i' is not getting evaluated as is evident from the error message - document.all['adjustedLineItems.selected'].
    The appearance of 'i' in the error message tells it all, right ? :)
    So
    document.all['adjustedLineItems[' + i + '].selected'].checked=true;should do the trick.
    ram.

  • Loop through Array structure - using xpath

    Hello,
    My BPEL process logic is as follows:
    a. Extract data into variable - receiveMessageInputVariable
    The variable 'receiveMessageInputVariable' in turn has data in array structure. (set of items)
    b. Transform the data to target structure
    c. Call target partner link to store extracted data into varaible 'ServiceInputVariable'
    The variable 'ServiceInputVariable' structure is similar to 'receiveMessageInputVariable'
    In the BPEL process 'at process' level - I have catch-all exception handler - which must send the list of 'items' which failed during a BPEL instance.
    i. If my email body has the following code as below:
    <%bpws:getVariableData('receiveMessageInputVariable','XXINV_ITEM_PAY_ROW_TYPE','/ns4:XXINV_ITEM_PAY_ROW_TYPE/ITEMLINE/ITEMLINE_ITEM/ITEM_NUMBER')%>
    It successfully fetches only the first item_number record of the array structure. But does not fetch the other records in the array.
    ii. Similarly, I wish to print all the items (as received) to be available in the email body in the following pattern:
    <%"Record One-"%>
    <%bpws:getVariableData('receiveMessageInputVariable','XXINV_ITEM_PAY_ROW_TYPE','/ns4:XXINV_ITEM_PAY_ROW_TYPE/ITEMLINE/ITEMLINE_ITEM[1]/ITEM_NUMBER')%>
    <%"<br/>"%>
    <%"Record Two-"%>
    <%bpws:getVariableData('receiveMessageInputVariable','XXINV_ITEM_PAY_ROW_TYPE','/ns4:XXINV_ITEM_PAY_ROW_TYPE/ITEMLINE/ITEMLINE_ITEM[2]/ITEM_NUMBER')%>
    <%"Record Nth-"%>
    <%bpws:getVariableData('receiveMessageInputVariable','XXINV_ITEM_PAY_ROW_TYPE','/ns4:XXINV_ITEM_PAY_ROW_TYPE/ITEMLINE/ITEMLINE_ITEM[N]/ITEM_NUMBER')%>
    Please suggest a suitable syntax in my email body - which can loop through all itemline_item array and print all the item_numbers.
    (pseudo code below)
    for i in 1 .. ora:countNodes(bpws:getVariableData('receiveMessageInputVariable','XXINV_ITEM_PAY_ROW_TYPE','/ns4:XXINV_ITEM_PAY_ROW_TYPE/ITEMLINE/ITEMLINE_ITEM/ITEM_NUMBER'))
    loop
    <%"Item Number-"%><%bpws:getVariableData('i')%>
    <%bpws:getVariableData('receiveMessageInputVariable','XXINV_ITEM_PAY_ROW_TYPE','/ns4:XXINV_ITEM_PAY_ROW_TYPE/ITEMLINE/ITEMLINE_ITEM/ITEM_NUMBER')%>
    end loop;
    Thanks,
    Santhosh

    Hi Santhosh
    Try with the following approach. It may work for you
    1. Create one XSD, for the HTML content
    <xsd:element name="HTML">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="C1" type="xsd:string" nxsd:style="terminated" nxsd:terminatedBy="${eol}">
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    2. Create one XSL, may be you have to do this manually, as JDev will not support HTML transformations. This XSL will map your input XML to an HTML format.
    3. Create one variable in BPEL of type in the above XSD
    4. Use assign activity to assign the XSL transformation to the variable defined in Step#3
    <from expression="ora:processXSLT('HTMLTransformation.xsl',bpws:getVariableData('Variable_Input',INPUT_TYPE'))"/>
    <to variable="invokeWriteHTMLService_Input" part="HTML" query="/ns6:HTML/ns6:C1"/>
    5. Copy the variable to the email body variable
    <copy>
    <from expression="bpws:getVariableData('invokeWriteHTMLService_Input','HTML','/ns6:HTML/ns6:C1')"/>
    <to variable="varNotificationReq" part="EmailPayload"
    query="/EmailPayload/ns8:Content/ns8:ContentBody"/>
    </copy>
    Basically, the above approach converts your input to a string value whose content is a complete HTML, and you will use only one value to assign to the email body.
    Note: Please change the Variable names/XPATH Expressions/XSL file name/element names etc according to your BPEL
    Hope this helps you
    Regards
    Ayon

  • Looping through Collection

    Hello I need to loop through the collection to process 500 records at a time from the resultset.
    how do i do this?
    I have created another variable of same type as resultset output variable type. but not sure how to assign nodes 1 to 1000 to the new variable.

    Hi,
    You can loop over your collection with a while loop. The following is from the bpel samples directory (112.Arrays) adapted to your needs. Define the variables:
    <variable name="iterator" type="xsd:integer"/>
    <variable name="count" type="xsd:integer"/>
    <variable name="xpath" type="xsd:string"/>
    Set the initial values:
    <assign name="SetInitialValues">
    <copy>
    <from expression="1"/>
    <to variable="iterator"/>
    </copy>
    <copy>
    <from expression="ora:countNodes('input', 'payload','/tns:collection/tns:item')"/>
    <to variable="count"/>
    </copy>
    </assign>
    Make a while loop:
    <while condition=" bpws:getVariableData('count') >= bpws:getVariableData('iterator')">
    <sequence>
    <assign name="setAttribute">
    <copy>
    <from expression="concat('/tns:collection/tns:item[',bpws:getVariableData('iterator'),']/tns:value')"/>
    <to variable="xpath"/>
    </copy>
    <copy>
    <from expression="bpws:getVariableData('input','payload',bpws:getVariableData('xpath'))/>
    <to variable="output" part="payload" query="/tns:recordVariable/tns:value"/>
    </copy>
    <!--
    Place here your own actions to be executed for every row
    -->
    <copy>
    <from expression="bpws:getVariableData('iterator') + 1"/>
    <to variable="iterator"/>
    </copy>
    </assign>
    </sequence>
    </while>
    So the trick is to dynamically build an xpath expression based on the while loop counter.
    Kind Regards,
    Andre

  • How to loop through the "On My Mac" folders in mail?

    Hi there - i am new to applescript, but am slowly working out how to use it.
    I am stumped on how to write a rule that will move a message to a folder identified by a tag in a message (I am using MailTags).
    I have script that will take the first tag and move the message to a mail folder in a fixed location (e.g. Archive/<tag name>) however I wanted to make it more generic by looping over all of my mail folders and finding one that matched the tag name.
    However I am stumped on how to loop over all of my mail folder names - I have tried:
    repeat with aFolder in (every mailbox of (mailbox for "ON MY MAC"))
    and
    repeat with aFolder in every mailbox of inbox
    etc.
    but none of these seem to work.
    Is there some magic syntax to do this, so that I can do:
    if (name of aFolder = msgTag) then
    move oneMessage to mailbox (name of aFolder)
    end if
    Tim

    You don't necessarily need to assign a variable to the entire list in order to loop through them (unless you really want to) - for example:
    tell application "Mail" to repeat with aFolder in (get mailboxes)
            -- do stuff with aFolder
    end repeat
    There are several AppleScript resources, but the main ones I use are:
    AppleScript Language Guide
    AppleScript Tutorials at MacScripter.net

  • Looping through an XML file

    I got this really great script that loops through some XML files and does stuff based off the content.
    What I would like to do now is have it repeat when it gets to a certain field. for example my xml file would look like this.
    <xml>
    <fileName>nameoffile</fileName>
    <userEmail>[email protected]</userEmail>
    <commandList>
    <item>info here</item>
    <item>more info here</item>
    <item>yet more info</item>
    <item>still more info here</item>
    </commandList>
    </xml>
    then basically i need the applescript to see the <commandList> tag and then repeat for each item.
    i can't seem to wrap my head around how to get it to happen.
    currently I am using this to extract the normal tags from the xml file
    set theXML to choose file
    tell application "System Events"
    tell XML element 1 of contents of XML file theXML
    set the fileName to value of (XML elements whose name is "fileName")
    ... and so on
    end tell
    end tell
    i believe i have to put an if statment in saying that if the element name == "commandList" then
    repeat with item in commandList
    my stuff here.
    end repeat
    but i'm not sure how to build the statement.
    thanks for any help.
    P

    Something like this?
    <pre style="
    font-family: Monaco, 'Courier New', Courier, monospace;
    font-size: 10px;
    margin: 0px;
    padding: 5px;
    border: 1px solid #000000;
    width: 720px;
    color: #000000;
    background-color: #FFEE80;
    overflow: auto;"
    title="this text can be pasted into the Script Editor">
    set theXML to POSIX path of (choose file)
    tell application "System Events"
    tell XML element 1 of contents of XML file theXML -- root element
    set the fileName to value of XML element "fileName"
    get value of XML elements of XML element "commandList" -- sub elements
    repeat with anItem in the result
    log anItem
    end repeat
    end tell
    end tell
    </pre>

  • How to loop through XML data in a table of XMLType?

    Hi,
    I am failry new to xml document processing in Oracle using PL/SQL.
    My DB version: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
    I have successfully loaded an xml document into a table using the following two statements:
    1) CREATE TABLE mytable2 OF XMLType;
    2) INSERT INTO mytable2 VALUES (XMLType(bfilename('IMAGE_FILE_LOC', 'IFTDISB20100330172157C002.xml'), nls_charset_id('AL32UTF8')));
    Now I need to traverse through the various nodes within the xml document and extract values of elements of each node. The question I have is:
    How do I loop through a node? A VALID record is enclosed within the <checkItem> </checkItem> tags.
    Here is a snippet of the data in that xml document:
    ++++++++++++++++++++++++++++++++++++++++++++++++
    <?xml version="1.0" encoding="UTF-8"?>
    <bdiData>
    <documentControlInfo>
    <documentInfo>
    <docDescription>Check images and data for Test Company, account number 1234567890</docDescription>
    <docID>
    <ID>20100330172157</ID>
    </docID>
    <docModifier>Test Company</docModifier>
    <docCreateDate>2010-03-30</docCreateDate>
    <docCreateTime>17:21:57-0700</docCreateTime>
    <standardVersion>1.0</standardVersion>
    <testIndicator>0</testIndicator>
    <resendIndicator>0</resendIndicator>
    </documentInfo>
    <sourceInfo>
    <sourceName>The Bank IFT</sourceName>
    <sourceID>
    <idOther>TheBankIFT</idOther>
    </sourceID>
    </sourceInfo>
    <destinationInfo>
    <destinationName>Test Company</destinationName>
    <destinationID>
    <idOther>FEI3592</idOther>
    </destinationID>
    </destinationInfo>
    </documentControlInfo>
    <checkItemCollection>
    <collectionInfo>
    <description>Items</description>
    <ID>1269994919135</ID>
    <Classification>
    <classification>Items</classification>
    </Classification>
    </collectionInfo>
    <checkItemBatch>
    <checkItemBatchInfo>
    <description>Paid Checks</description>
    <ID>1269994919135</ID>
    <Classification>
    <classification>Paid Checks</classification>
    </Classification>
    </checkItemBatchInfo>
    <checkItem>
    <checkItemType>check</checkItemType>
    <checkAmount>86468</checkAmount>
    <postingInfo>
    <date>2010-03-29</date>
    <RT>10700543</RT>
    <accountNumber>1234567890</accountNumber>
    <seqNum>009906631032</seqNum>
    <trancode>001051</trancode>
    <amount>86468</amount>
    <serialNumber>300040647</serialNumber>
    </postingInfo>
    <totalImageViewsDelivered>2</totalImageViewsDelivered>
    <imageView>
    <imageIndicator>Actual Item Image Present</imageIndicator>
    <imageViewInfo>
    <Format>
    <Baseline>TIF</Baseline>
    </Format>
    <Compression>
    <Baseline>CCITT</Baseline>
    </Compression>
    <ViewSide>Front</ViewSide>
    <imageViewLocator>
    <imageRefKey>201003260000738400851844567205_Front.TIF</imageRefKey>
    <imageFileLocator>IFTDISB20100330172157M002.zip</imageFileLocator>
    </imageViewLocator>
    </imageViewInfo>
    <imageViewInfo>
    <Format>
    <Baseline>TIF</Baseline>
    </Format>
    <Compression>
    <Baseline>CCITT</Baseline>
    </Compression>
    <ViewSide>Rear</ViewSide>
    <imageViewLocator>
    <imageRefKey>201003260000738400851844567205_Rear.TIF</imageRefKey>
    <imageFileLocator>IFTDISB20100330172157M002.zip</imageFileLocator>
    </imageViewLocator>
    </imageViewInfo>
    </imageView>
    </checkItem>
    <checkItem>
    <checkItemType>check</checkItemType>
    <checkAmount>045</checkAmount>
    <postingInfo>
    <date>2010-03-29</date>
    <RT>10700543</RT>
    <accountNumber>1234567890</accountNumber>
    <seqNum>008518967429</seqNum>
    <trancode>001051</trancode>
    <amount>045</amount>
    <serialNumber>200244935</serialNumber>
    </postingInfo>
    <totalImageViewsDelivered>2</totalImageViewsDelivered>
    <imageView>
    <imageIndicator>Actual Item Image Present</imageIndicator>
    <imageViewInfo>
    <Format>
    <Baseline>TIF</Baseline>
    </Format>
    <Compression>
    <Baseline>CCITT</Baseline>
    </Compression>
    <ViewSide>Front</ViewSide>
    <imageViewLocator>
    <imageRefKey>201003290000713900851896742901_Front.TIF</imageRefKey>
    <imageFileLocator>IFTDISB20100330172157M002.zip</imageFileLocator>
    </imageViewLocator>
    </imageViewInfo>
    <imageViewInfo>
    <Format>
    <Baseline>TIF</Baseline>
    </Format>
    <Compression>
    <Baseline>CCITT</Baseline>
    </Compression>
    <ViewSide>Rear</ViewSide>
    <imageViewLocator>
    <imageRefKey>201003290000713900851896742901_Rear.TIF</imageRefKey>
    <imageFileLocator>IFTDISB20100330172157M002.zip</imageFileLocator>
    </imageViewLocator>
    </imageViewInfo>
    </imageView>
    </checkItem>
    <checkItemBatchSummary>
    <totalItemCount>1028</totalItemCount>
    <totalBatchAmount>61370501</totalBatchAmount>
    <totalBatchImageViewsDelivered>2056</totalBatchImageViewsDelivered>
    </checkItemBatchSummary>
    </checkItemBatch>
    <collectionSummary>
    <totalBatchCount>1</totalBatchCount>
    <totalItemCount>1028</totalItemCount>
    <totalCollectionAmount>61370501</totalCollectionAmount>
    <totalCollectionImageViewsDelivered>2056</totalCollectionImageViewsDelivered>
    </collectionSummary>
    </checkItemCollection>
    <documentSummaryInfo>
    <totalCollectionCount>1</totalCollectionCount>
    <totalBatchCount>1</totalBatchCount>
    <totalItemCount>1028</totalItemCount>
    <totalDocumentAmount>61370501</totalDocumentAmount>
    <totalDocumentImageViewsDelivered>2056</totalDocumentImageViewsDelivered>
    </documentSummaryInfo>
    </bdiData>
    ++++++++++++++++++++++++++++++++++++++++++++++++
    Any ideas and or suggestions will be greatly appreciated.
    Cheers!
    Edited by: user12021655 on Aug 3, 2010 1:25 PM

    I really need to update my blog to get the example you are looking for posted. I did a quick search on the forums for XMLTable and found a good example at {message:id=4325701}. You will want to use OBJECT_VALUE in the PASSING clause where you need to reference the column in your table.
    Note: See the FAQ in the upper right for how to use the tag to wrap objects to retain formatting.  Also your XML is missing closing nodes.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Add a for each script to loop through HTTPService?

    I'm using Flash Builder 4 with the Flex 4.1 SDK.  I want to add a "for each" script to loop through my HTTPService XML file so only each nepName displays only once in my dropdown list.  In my XML file I have multiple records associated with nepName.  I would like ALL the records associated with each nepName to populate in my datagrid when it is selected from the dropdown.  Currently in my dropdown there is a nepName entry for each XML tag.  I hope I was able to explain that well enough. I'll try to put my code below so you can see everything I'm working with.
    MXML:
    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                   xmlns:s="library://ns.adobe.com/flex/spark"
                   xmlns:esri="http://www.esri.com/2008/ags"
                   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
                   creationComplete="nepInfo.send()">
        <s:layout>
            <s:VerticalLayout horizontalAlign="center" paddingTop="25"/>
        </s:layout>
        <fx:Declarations>
            <s:HTTPService id="nepInfo" url="http://www.epa.gov/owow/estuaries/nep_info.xml"/>
            <!--s:RadioButtonGroup id="optiongroup"/-->
        </fx:Declarations>
        <s:Panel title="NEP Project Information">
            <s:layout>
                <s:VerticalLayout/>
            </s:layout>
            <s:HGroup verticalAlign="middle">
        <mx:Form x="188" y="34" width="338">
        <mx:FormItem label="Search for NEP Information:">
        <s:DropDownList enabled="true" id="dropDownList" prompt="Select NEP" dataProvider="{nepInfo.lastResult.records.record}" labelField="nepName">
        </s:DropDownList>
        </mx:FormItem>
        </mx:Form>       
            </s:HGroup>   
            <mx:DataGrid id="resultsGrid"
                         dataProvider="{dropDownList.selectedItem}"
                         visible="{dropDownList.selectedItem != null}" x="20" y="62" width="1166" height="620">
                <mx:columns>
                    <mx:DataGridColumn dataField="projectName" headerText="Project Name" wordWrap="true"/>
                    <mx:DataGridColumn dataField="projectDescription" headerText="Project Description" wordWrap="true"/>
                    <mx:DataGridColumn dataField="acres" headerText="Acres" wordWrap="true"/>
                    <mx:DataGridColumn dataField="habitatDescription" headerText="Habitat Description" wordWrap="true"/>
                    <mx:DataGridColumn dataField="neportCategory" headerText="Habitat Category" wordWrap="true"/>
                    <mx:DataGridColumn dataField="restorationType" headerText="Restoration Type" wordWrap="true"/>
                    <mx:DataGridColumn dataField="leadPartner" headerText="Lead Partner" wordWrap="true"/>
                </mx:columns>
            </mx:DataGrid>
        </s:Panel>
    </s:Application>
    XML: http://www.epa.gov/owow/estuaries/nep_info.xml
    Thank you in advance for your help!
    -Alison

    ($file, pwd);Assuming "pwd" is meant as the current directory, here a small example :
    TEST@db102 SQL> create or replace procedure test_proc (p1 varchar2, p2 varchar2)
      2  is
      3  begin
      4     dbms_output.put_line (p1||' '||p2);
      5  end;
    TEST@db102 SQL> /
    Procedure created.
    TEST@db102 SQL> exit
    Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options
    $ ls -l /tmp/test/*.sql
    -rw-r--r--  1 ora102 dba  69 Apr 18 23:23 /tmp/test/file1.sql
    -rw-r--r--  1 ora102 dba 112 Apr 18 23:23 /tmp/test/file2.sql
    -rw-r--r--  1 ora102 dba 120 Apr 18 23:23 /tmp/test/file3.sql
    $ cat test_proc.sh
    DIR=/tmp/test
    cd $DIR
    ls *.sql | while read file
    do
            echo "Processing file $file"
            sqlplus -s test/test << EOF
    set feed off
    set pages 0
    set serveroutput on
    exec test_proc('$file', '`pwd`');
    exit
    EOF
    done
    $ ./test_proc.sh
    Processing file file1.sql
    file1.sql /tmp/test
    Processing file file2.sql
    file2.sql /tmp/test
    Processing file file3.sql
    file3.sql /tmp/test
    $

  • Looping through javabean array in jsp?

    Hello,
    In my servlet, I created an ArrayList of objects and pass these to a jsp page using:
    req.setAttribute("bean", uploadList);
    The ArrayList contains objects of the FileBean class, with a getIndex, and getDate methods.
    Could any possibly demonstrate how to loop through the ArrayList in the jsp and display the FileBean object values in a html table?
    To display the values of a javabean in jsp pages I normally have to use for example, requestScope.bean.getMethod();
    Thanks

    No, that would be requestScope.bean.attributename, if your getter method has the same name as the attribute you are getting.
    To loop through an array you have to use the c:forEach tag. Check google for "jstl foreach example", there are loads of examples.

  • Loop through all controls in view

    Hi Everyone,
    I need to cycle through all the controls on a view.
    I have set each of the controls of type UISegmentedControl with a unique tag number.
    I am using this tag number to perform a lookup in database for the value of the segmented control.
    So, my question is this.... how do i cycle through all the controls on a view?
    thank you
    take care
    tony

    alt-088 wrote:
    I think we are close - just one correction.
    The segmented controls are all at design time, there will be no new controls added.
    I'm not clear on what's been corrected. The sample code I gave you assumed all the controls were known at compile time. So I think the example code addressed the problem you're trying to solve. The last paragraph of that post was just an afterthought, to explain what to do in case you ever needed to add controls dynamically.
    -> loop through all controls on view
    -> if control is of type uisegmentdcontrol
    then do database lookup on tag
    Set segment value to value returned from database
    Once again, if I correctly understand the above, the code I gave you does exactly what you want. You haven't indicated you want to take any action when a control is not a segmented control, so I don't see why you'd want to include them in the loop. However, if you actually do need to enumerate non-segmented controls (or other subviews), my last response advised you to set the tag properties of all those other controls, making sure the range of those tags is different from the range of the seg control tags.
    The part that eludes me is the looping through all the controls on the view
    I guess the part that eludes me is why you're so interested in enumerating all the controls, when you only seem to be interested in the segmented controls. But even if you really do need to look at every control, I don't see why you're rejecting the solution I gave you. [viewWithTag:|http://developer.apple.com/iphone/library/documentation/UIKit/Ref erence/UIViewClass/UIView/UIView.html#//appleref/doc/uid/TP40006816-CH3-SW26] is a powerful method which recursively walks the entire view hierarchy to find whatever tag it's looking for. If you use it correctly (e.g. by assigning unique tag numbers that tell you what type of control you've found), it will save you lots of trouble.
    If, for some reason, you insist on doing this job without using viewWithTag, the next best might be something like this:
    - (void)doSomethingWithEachSegCtrlInView:(UIView *theView) {
    UIView *subView;
    for (subView in theView.subviews) {
    if ([subView respondsToSelector:@selector(selectedSegmentIndex)]) {
    // subView is a segmented control ...
    else {
    // subView is not a segmented control ...
    if ([subView.subviews count]) {
    // this subview has its own subviews
    [self doSomethingWithEachSegCtrlInView:subView];
    Note that the above is a more difficult, more error prone method than the sample in my first response. Firstly, it needs to recurse in case any controls are placed on subviews of the main view (or on subviews of those subviews, etc.), a capability already built into viewWithTag. Secondly it needs to identify the type of each subview object. [respondsToSelector:|http://developer.apple.com/iphone/library/documentation/Co coa/Reference/Foundation/Protocols/NSObjectProtocol/Reference/NSObject.html#//appleref/occ/intfm/NSObject/respondsToSelector:] is the preferred way of identifying the class of an object, especially when the selector argument represents one of the methods you intend to use. However there's no reason to get into the business of identifying the class of an object, when you could have given that object a unique tag number in the xib, where there was no question about its class.
    Hope the above communicates the solution better than my first response!
    - Ray

  • How to loop through xmldom.getNextSibling?

    Hello,
    I have been working with an example that Steve provided me with that uses xpath to pull the value of a specific node from an xml doc. This works fine as long as there is only one node, I would like to use getNextSibling to loop through all the values that exist for that node in the document. I am pasting in the code I am working with. I know I need to use the getNextSibling but am unsure of where I should loop. I left some commented stuff in there to illustrate some of the directions that I wanted to go, I will be writing the results to a nested table. Any assistance greatly appreciated.
    Thanks,
    Travis
    PROCEDURE testit (dummy in varchar2 default null) IS
    -- dummy will be xml doc passed in when this goes live
    xml varchar2(32000) := '<?xml version="1.0"?>
    <Pip3A2PriceAndAvailabilityQuery>
    <ProductPriceAndAvailabilityQuery>
    <ProductPriceAndAvailability>
    <ProductLineItem>
    <ProductQuantity>0</ProductQuantity>
    <productUnit>
    <ProductPackageDescription>
    <ProductDescription>
    <GlobalProductIdentifier>A00012</GlobalProductIdentifier>
    </ProductDescription>
    </ProductPackageDescription>
    </productUnit>
    <requestedPrice>
    <FinancialAmount>
    <GlobalCurrencyCode>USD</GlobalCurrencyCode>
    </FinancialAmount>
    </requestedPrice>
    </ProductLineItem>
    <ProductLineItem>
    <ProductQuantity>0</ProductQuantity>
    <productUnit>
    <ProductPackageDescription>
    <ProductDescription>
    <GlobalProductIdentifier>A00018</GlobalProductIdentifier>
    </ProductDescription>
    </ProductPackageDescription>
    </productUnit>
    <requestedPrice>
    <FinancialAmount>
    <GlobalCurrencyCode>USD</GlobalCurrencyCode>
    </FinancialAmount>
    </requestedPrice>
    </ProductLineItem>
    </ProductPriceAndAvailability>
    </ProductPriceAndAvailabilityQuery>
    <fromRole>
    <PartnerRoleDescription>
    <GlobalPartnerRoleClassificationCode>Customer</GlobalPartnerRoleClassificationCode>
    <PartnerDescription>
    <GlobalPartnerClassificationCode>End User</GlobalPartnerClassificationCode>
    <BusinessDescription>
    <GlobalBusinessIdentifier>00031583</GlobalBusinessIdentifier>
    <GlobalSupplyChainCode>Information Technology</GlobalSupplyChainCode>
    </BusinessDescription>
    </PartnerDescription>
    </PartnerRoleDescription>
    </fromRole>
    <toRole>
    <PartnerRoleDescription>
    <GlobalPartnerRoleClassificationCode>Customer</GlobalPartnerRoleClassificationCode>
    <PartnerDescription>
    <GlobalPartnerClassificationCode>End User</GlobalPartnerClassificationCode>
    <BusinessDescription>
    <GlobalBusinessIdentifier/>
    <GlobalSupplyChainCode>Information Technology</GlobalSupplyChainCode>
    </BusinessDescription>
    </PartnerDescription>
    </PartnerRoleDescription>
    </toRole>
    <thisDocumentGenerationDateTime>
    <DateTimeStamp>20000229T140102.333Z</DateTimeStamp>
    </thisDocumentGenerationDateTime>
    <thisDocumentIdentifier>
    <ProprietaryDocumentIdentifier>Panda20000229T140102.333Z</ProprietaryDocumentIdentifier>
    </thisDocumentIdentifier>
    <GlobalDocumentFunctionCode>request</GlobalDocumentFunctionCode>
    </Pip3A2PriceAndAvailabilityQuery>
    v_counter number := 1;
    partno varchar2(25) := 'IM NOT NULL';
    quantity varchar2(10);
    custid varchar2(25);
    conpart varchar2(50);
    p xmlparser.parser;
    xd xmldom.DOMDocument;
    -- Variables for the pricing call
    in_caller_name varchar2(50) := 'xsourcer';
    in_commit_allow_flag varchar2(50) := NULL;
    in_customer_no number;
    in_part_no_arg varchar2(50);
    in_mfg_arg varchar2(50) := NULL;
    in_cat_arg varchar2(50) := NULL;
    in_sub_arg varchar2(50) := NULL;
    in_opt_arg varchar2(50) := NULL;
    out_price n umber;
    out_prior_var number;
    out_ret_val varchar2(50);
    out_success_code number;
    out_error_code number;
    out_error_message varchar2(500);
    v_partlist partlist;
    -- This function converts the GlobalProductIdentifier (Manufacturer Part Number)
    -- to an elcom part number by performing a query against the dfp_parts table
    -- I created a local table with a few manufacturer part no's and elcom part no's
    function valueOf(xd xmldom.DOMDocument, xpath VARCHAR2) return varchar2 is
    n xmldom.DOMNode;
    nl xmldom.DOMNodeList;
    e xmldom.DOMElement;
    begin
    -- Cast the document to a node
    n := xmldom.makenode(xd);
    -- Select Nodes Matching XPath Pattern
    nl := xslprocessor.selectNodes(n,xpath);
    IF xmldom.getLength(nl) > 0
    THEN
    e := xmldom.makeElement(xmldom.item(nl,0));
    xmldom.normalize(e);
    RETURN ltrim(rtrim(xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item(nl,1)))));
    END IF;
    end;
    begin
    -- New Parser
    p := xmlparser.newparser;
    -- Parse the XML document
    xmlparser.parseBuffer(p,xml);
    -- Get the XML document that's been parsed
    xd := xmlparser.getdocument(p);
    custid := valueof(xd,'//GlobalBusinessIdentifier');
    insert into xrequest values (44, custid,null,sysdate);
    in_customer_no := to_number(custid);
    -- Calls to the xpath function to get the tags we want the value of
    /* FOR v_count IN 1..
    xd.length LOOP
    getNextSibling() RETURN DOMNode;
    WHILE (PARTNO IS NOT NULL) LOOP
    partno := valueof(xd,'//GlobalProductIdentifier');
    in_part_no_arg := partno;
    v_counter := v_counter + 1;
    -- call pricing here pass in custid, partno
    -- assign outprice_var to price of nested table
    corp_get_price_sp(in_caller_name, in_commit_allow_flag, in_customer_no,
    in_part_no_arg, in_mfg_arg, in_cat_arg, in_sub_arg,
    in_opt_arg, out_price, out_prior_var, out_ret_val,
    out_success_code, out_error_code, out_error_message);
    IF V_COUNTER = 100 THEN
    HTP.P('EXIT OUT');
    EXIT;
    END IF;
    --XREQUEST.PART_NO := PARTNO;
    --XREQUEST.PRICE := OUT_PRICE_VAR;
    htp.p(out_price);
    htp.br;
    -- insert into xrequest values (44, custid,(Partlist(PartObj(partno, out_price, null, null, null, null)))sysdate);
    END LOOP;
    quantity := valueof(xd,'//ProductQuantity');
    end;
    null

    You can first create a databank with the Input values and associated navigation. For eg. Navigation,csv will have
    Input, Navigation
    Hardware, window(index=0).link(text="Hardware" | href="http://..." | index=28)
    Monitors,
    Record the script by selecting from the dropdown box and then going to the resulting page. Attach the databank to the script and use the databank to select the Input value for the dropdown on the page. On the Resulting Page add code to the PageBeforePlay method -
    dim strNav as string
    'get the navigation value from the databank
    RSWApp.GetDataBankValue "Navigation", strNav
    rswapp.ChangeNavigation "", strNav, , , False
    The resulting page will then be the page that the navigation is changed to.
    You can loop through all the records in the databank to check the navigation for all of them.
    You will also have to look at how the value is set in the dropdown, as an Index or the actual value. If it is by Index, then in the databank file, change the Input to be the number of the selection like 1 or 2.
    Hope the above is what you are looking for.
    Question - The resulting page for each navigation will be different. How are you going to verfiy the different pages or continue on in the script?
    Message was edited by: mpalivela

  • How to loop through many XML messages and parse them ?

    Hi All
    I have been trying very hard to loop through many XML messages and process each of them. Let me first explain the problem -
    Suppose I have the following String -
    <xyz>
    <abc>happy</abc>
    </xyz>
    <xyz>
    <abc>new</abc>
    <xyz>
    <xyz>
    <abc>year</abc>
    </xyz>
    I have to process each message within the <xyz></xyz> tag and find the falue of <abc> element (happy, new and year).
    The extraction of <abc> value is very simple, I am using SAX parser's startElement() method to check every element's name and if the element's name is <abc> pick up the value. But I am not able to loop through the different messages within the <xyz></xyz> tag.
    I am thinking of using another DOM parser -
    DOMParser domParser = new DOMParser();
    StringReader rdr = new StringReader(inputXML);
    InputSource src = new InputSource(rdr);
    domParser.parse(src);
    Document doc = domParser.getDocument();
    NodeList nodeList = doc.getElementsByTagName("xyz");
    Now I can loop through this nodeList, but not able to. Is using the DOM parser and NodeList the preferable way of lopping through the messages, then how I can loop through ? Or is there any other way ?
    I have been trying on this for quite a few days, but not able to. Can you please help me out ?
    Thanking you in advance ....
    Nirmalya Sinha

    Hi,
    Try using the SAX reader from the dom4j package. The document object that you receive contains methods for getting the root elements and with that you can traverse down to the sub elements of it.
    Hope this was of some help.

  • Loop through nested elements and insert via PL/SQL

    INSERT INTO Orders(id, OrderXML) VALUES
    (S_Orders.Nextval,
    '<?xml version="1.0" encoding="utf-8" ?>
    <Order xmlns="urn:foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:foo foo-1.xsd">
    <OrderRef>BBB</OrderRef>
    <OrderDate>2005-03-29</OrderDate>
    <CustomerID>1051</CustomerID>
    <Items>
    <Item>
    <ProductID>7</ProductID>
    <Price>45.6</Price>
    <Quantity>2</Quantity>
    </Item>
    <Item>
    <ProductID>19</ProductID>
    <Price>73.5</Price>
    <Quantity>10</Quantity>
    </Item>
    </Items>
    </Order>'
    I some questions regarding index search of nested elements like,Items in the above example.
    I would like to know how I can LOOP through the Items like 1..2 LOOP
    and insert those elements(item) into one table. Order information should go in to another table.
    Can this be done with xpath and PL/SQL.
    Regards
    Ulf

    Hi Marco!
    Here's some more information:
    CREATE TABLE ITEM (ProductID NUMBER,
    Price NUMBER(8,2)
    Quantity 10 NUMBER);
    CREATE TABLE ORDER (OrderRef VARCHAR2(10),
    ORDER_DATE VARCHAR2(10),
    CUSTOMERID NUMBER);
    The main problem that I have is to create an solution that can be dynamic so that I can have for instance one order and four items in one XML.
    The second XML can have one order and 10 items.
    First I want to insert the order elements in the order table and then the items records in the item table.
    To complicate things futher my real XML have namespaces in the XML, but this I think I can handle.
    Summary: So for each order row(element) I want to traverse the Item elements and insert them to the Item table.
    Regards
    /Ulf

  • Looping through email addresses. CFTRY/CFCATCH

    I am building an email system that will be looping through a
    list of email addresses in our database and sending mail via
    CFMAIL. Alot of times, the email addresses are bad. i.e.: no
    ".com", a comma in the email address, bad characters etc. How can I
    loop through the email addresses sending them out, but when CFMAIL
    errors out because of a bad address, the loop continues on ignoring
    the bad address. Can I do this with CFTRY/CFCATCH? Will
    CFTRY/CFCATCH halt the process entirely or will it catch it then
    continue on?

    Cold Fusion has an isvalid function you can use to confirm
    that any
    given string is a properly formatted email address. You can
    use this to
    prevent improperly formatted addresses from getting into your
    db in the
    first place.
    If ColdFusion was used to put the email address into the
    database in the
    first place. That is not always true. Some places have more
    the one
    application working with a given database.
    Now using isValid to validate the address before attempting
    to use it in
    a <cfmail...> tag may provide some value, but would
    still be comfortable
    with wrapping the tag with a try catch. I just like to do so
    whenever I
    am playing with other protocols.

Maybe you are looking for