XML에서 하나의 속성을 기반으로 중복 항목을 제거했습니다. 내 문제는 여러 특성 열을 비교하기 위해 중복을 제거해야합니다.Marklogic : XQuery를 사용하여 중복 제거
Input
<Id>
<tbl_Keysight_Input Auto_Id="66365" Product_No="10070D" Product_Option="10070D"/>
<tbl_Keysight_Input Auto_Id="66365" Product_No="10070D" Product_Option="10070D"/>
<tbl_Keysight_Input Auto_Id="66365" Product_No="10070D1" Product_Option="10070D"/>
<tbl_Keysight_Input Auto_Id="66365" Product_No="10070D1" Product_Option="10070D"/>
<tbl_Keysight_Input Auto_Id="66365" Product_No="10070D" Product_Option="10070D"/>
</Id>
Expected output:
<Id>
<tbl_Keysight_Input Auto_Id="66365" Product_No="10070D" Product_Option="10070D"/>
<tbl_Keysight_Input Auto_Id="66365" Product_No="10070D1" Product_Option="10070D"/>
</Id>
제 요구 사항에 맞는 xquery를 제공해주십시오.
아래 쿼리는 Auto_id를 기반으로합니다. 어떤 preceding-sibling
요소가 deep-equal 경우
for $d in distinct-values(xdmp:directory("/documents/","1")//Id/tbl_Keysight_Input/@Auto_Id)
let $items := xdmp:directory("/documents/","1")/id/tbl_Keysight_Input[@Auto_Id = $d]
order by $d
return
for $i in $items [position() le 1]
return $i
['fn : deep-equal()'] (https://docs.marklogic.com/fn:deep-equal)을 사용하고 있습니까? – har07
@ har07 진실과 거짓 진술 만 반환하지만 결과가 필요합니다 – Antony
하나의 속성을 기반으로 중복 항목을 제거 할 때 사용한 전략과 동일한 전략을 적용 할 수 없습니까? 하나의 속성을 비교하는 대신 2 개의 요소 사이의 동일성을 판단하기 위해'deep-equal()'만 사용하십시오 .. – har07