Using position function for accessing particular node when using While Activity in SOA 11.1.1.5

Posted by AJ on Oracle Blogs See other posts from Oracle Blogs or by AJ
Published on Thu, 5 Apr 2012 12:04:35 -0500 Indexed on 2012/04/05 23:36 UTC
Read the original article Hit count: 303

Filed under:

Hi

If you are using while activity in SOA Suite 11.1.1.5 and within loop you have a requirement to access repeating node of XML. You might need to use below XPATH expression for accessing the node.

Here is the XML that I am using for this example

<?xml version='1.0' encoding='UTF-8'?>


David
DemoJob
1
2012-04-15
40000
0
10


Steve
TestJob
1
2012-04-15
40000
0
10


Here you can notice that Emp node is repeating i.e. EmpCollection node will contain multiple employees.

Now in loop one of assign activity you need to access a particular node for e.g. For first time loop runs you want to access first node and second time second node and so on.

You need to make use of postion() function like

bpws:getVariableData('Receive1_Read_InputVariable','body','/ns4:EmpCollection/ns4:Emp[position()=$loopCounter]/ns4:job')

Please Note: Here loopCounter is a variable that we have created of type xsd:int and prior to loop we have initialized a value of 1.

Loop will run depending on the number of Emp nodes present at runtime. For that in while Activity you can use below XPATH expression

ora:countNodes('Receive1_Read_InputVariable','body','/ns4:EmpCollection/ns4:Emp')>=bpws:getVariableData('loopCounter')

Do let me know in case of any issues or concern.

Cheers
AJ

© Oracle Blogs or respective owner

Related posts about /Oracle