cancel
Showing results for 
Search instead for 
Did you mean: 

XPath Condition Negative Condition

Former Member
0 Kudos

Hi.

I want to stop a message in Receiver Determination.


If portNum = 5 and id = 38268

the message shouldn't be process , but I tried many time and it doesn't work.

My previous test

1.- (/S1/A1/@portNum != '5' and /S1/A1/@id != '38268')

2.- (/S1/A1/@portNum u2260 5 AND /S1/A1/@id u2260 38268)

Below is an example


....
.<S1>
....<A1 portNum ="5" id ="38268"/>	
....<A1 portNum ="6" id ="18258"/>	
....<A1 portNum ="7" id ="38268"/>	
.</S1>
....

Can you help another posible solutions?

Regards

Lucho.

Accepted Solutions (1)

Accepted Solutions (1)

udo_martens
Active Contributor
0 Kudos

Hi Lucho,

(/S1/A1/@portNum != '5' and /S1/A1/@id != '38268') is always true, if you have more than one element A1. You need to combine both conditions:

 not(//S1/A1/@portNum[../@id = '38268'] = '5')

I m pretty shure this is correct xpath syntax but the question is if PI can handle that...

Regards,

Udo

Former Member
0 Kudos

Hi.

i tried many times but it doesn't worked yet.

Udo i tried with your path but PI can't handle this.

Deppa . I'm not ussing FCC.

Regards.

RKothari
Contributor
0 Kudos

Have you checked the below XPATH expression:

/S1/A1[(@portNum != '5')  and (@id = '38268')]             EX

Former Member
0 Kudos

Hi.

Thanks for your inputs. Finally I got with the solution.


/S1[ ./A1/@portNum != '5')  and ( ./A1/@id != '38268')]

Because If i put in depth level , PI handle all list as one and another problem was if port ="7" and id = "38268". the message always was stopped.

Edited by: Luis Ortiz on Mar 21, 2011 10:26 AM

Edited by: Luis Ortiz on Mar 21, 2011 11:24 AM

samiullah_qureshi
Active Contributor
0 Kudos

Thanks Luis for sharing the resolution.

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Lucho,

You mean to say..if port = 5 and id = 38268 then you donu2019t want to process the message.. then you can try following steps:

- Provide negative condition as if post not equal to 5 and id not equal to 38268 ..

- And on at bottom of receiver determination select error message radio button . this will error out your message and will not process..

- You can select ignore radio button also.. this will ignore the message and there wont be any error in your SXMB_MONI..

This should work in your case.. however as you mentioned in above structure there are multiple occurrences for portNum and id.. which is not possible to use in condition in receiver determination.. there is possibility that one occurrence will have port = 5 and id = 38268 and another will have some other value.. in that case if you want to send only those messages then I think you might need to change structure or might need to change the condition logic associated to it..

If there is only one occurrence of these fields then above suggested steps should work ..

Thanks,

Bhupesh

Former Member
0 Kudos

Hi Thanks for your reply.

Yeah I know I have multiple occurrences . I want the negative condition of this if A1 =5 and id = 38268.

Below is the complete example.


.<S1>
..<loopX>
.....<A1 portNum ="5" id ="38268"/>	
..</loopX>
..<loopX>
....<A1 portNum ="6" id ="18258"/>	
..</loopX>
..<loopX>
....<A1 portNum ="7" id ="38268"/>	
..</loopX>
.</S1>
....

Former Member
0 Kudos

yeah .. I can understand but in that case you may need to change the condition or logic behind that in your scenario.. because I faced same problem few days back.. and it was not working with Receiver Determination condition then I changed logic from sender side to get required input in format and then mentioned condition..so there is possibility that it will not work if you have multiple occurrences and few satisfying condition and few are not..

Thanks,

Bhupesh

deepak_shah
Contributor
0 Kudos

Hi,

Are you using FCC at sender side? If yes then you can try a workaround by using the FCC property "Recordset per message ". you can keep the value as 1. By doing so you can split multiple records in single message to multiple message with single record.

Then you can check your condition for Receiver determination.

Hope this helps.

Regards,

Deepak