ROW 및 LIST를 다른 ROW 및 LIST와 비교할 수 있습니다.
IF ROW(InputBody.Data.*[1],InputBody.Data.*[2]) = ROW('Raf' AS Name,'25' AS Age) THEN ... IF LIST{InputBody.Data.Name, InputBody.Data.Age} = LIST{'Raf','25'} THEN ...다음의 XML 입력 메시지 본문은 위의 두 명령문에 있는 IF 표현식이 모두 TRUE로 평가되도록 합니다.
<Data> <Name>Raf</Name> <Age>25</Age> </Data>LIST 사이의 비교에서는 각 요소의 값만이 비교되고, 반면 ROW 사이의 비교에서는 각 요소의 이름과 값이 모두 비교됩니다. 두 경우 모두에 비교되는 LIST 또는 ROW 피연산자의 카디낼리티 및 순차 순서는 두 피연산자가 동일하려면 동일해야 합니다. 다시 말해서 비교되는 피연산자의 순차 순서 또는 카디낼리티가 일치하지 않기 때문에 다음은 모두 거짓입니다.
ROW('alpha' AS A, 'beta' AS B) = ROW('alpha' AS A, 'beta' AS B, 'delta' AS D) ROW('alpha' AS A, 'beta' AS B) = ROW('beta' AS B,'alpha' AS A) LIST{1,2,3} = LIST{1,2,3,4} LIST{3,2,1} = LIST{1,2,3}
IF InputBody.Places = ROW('Ken' AS first, 'Bob' AS second, 'Kate' AS third) THEN ...다음의 XML 입력 메시지 본문은 위의 IF 표현식이 TRUE로 평가되도록 합니다.
<Places> <first>Ken</first> <second>Bob</second> <third>Kate</third> </Places>
비교 연산자에 대한 피연산자 중 하나로 명확하게 구성된 ROW의 존재는 다른 피연산자도 ROW로 취급되도록 합니다.
IF InputBody.Lottery.FirstDraw = InputBody.Lottery.SecondDraw THEN ...ROW로 구성된 각 FirstDraw 및 SecondDraw의 하위 필드에 대한 이름 및 값이 아니라 FirstDraw 및 SecondDraw 필드의 값을 비교합니다. 따라서 다음과 같은 XML 입력 메시지 본문은,
<Lottery> <FirstDraw>wednesday <ball1>32</ball1> <ball2>12</ball2> </FirstDraw> <SecondDraw>saturday <ball1>32</ball1> <ball2>12</ball2> </SecondDraw> </Lottery>위의 IF 표현식이 TRUE로 평가되도록 하지 않습니다. ball 필드의 이름과 값이 아니라 값 wednesday와 saturday가 비교되기 때문입니다.
IF InputBody.Cities.City[] = LIST{'Athens','Sparta','Thebes'} THEN ...다음의 XML 입력 메시지 본문은 IF 표현식이 TRUE로 평가되도록 합니다.
<Cities> <City>Athens</City> <City>Sparta</City> <City>Thebes</City> </Cities>
IF InputBody.Cities.Mediaeval.City[] = InputBody.Cities.Modern.City[] THEN ... IF InputBody.Cities.Mediaeval.*[] = InputBody.Cities.Modern.*[] THEN ... IF InputBody.Cities.Mediaeval.(XML.Element)[] = InputBody.Cities.Modern.(XML.Element)[] THEN ...다음의 XML 입력 메시지 본문은 위의 첫 번째 및 세 번째 명령문의 IF 표현식이 TRUE로 평가되도록 합니다.
<Cities> <Mediaeval>1350 <City>London</City> <City>Paris</City> </Mediaeval> <Modern>1990 <City>London</City> <City>Paris</City> </Modern> </Cities>그러나 두 번째 명령문의 IF 표현식은 FALSE로 평가됩니다. *[]는 (XML.Element)만이 아니라 Mediaeval 및 Modern의 모든 하위를 비교할 것임을 나타내기 때문입니다. 이 경우 Mediaeval 및 Modern의 이름 없는 하위를 형성하는 값 1350과 1990도 City 태그의 값과 함께 비교됩니다.
<Cities> <Mediaeval>1350 <Location>London</Location> <Location>Paris</Location> </Mediaeval> <Modern>1990 <City>London</City> <City>Paris</City> </Modern> </Cities>LIST는 이름이 지정되지 않은 값으로 구성되어 있습니다. 비교되는 것은 이름이 아닌 Mediaeval 및 Modern의 하위 필드 값입니다.