와 노드를 교체하십시오. XQuery를 사용하여 동일한 구조의 새 문서를 비교하고 싶습니다. 새 요소와 원본 요소에 하위 요소가 있으면 교체해야합니다. 새 요소에 하위 요소가 있지만 이전 요소가 아닌 하위 요소는 INVT_DATA에 추가되어야합니다.XQuery는이 같은 구조화 된 문서를 두 문서를 비교하고 같은 이름
이 XQuery를, 내 생각, 작동하지만 그것은 언제나 대신에 노드를 추가 할 것 같습니다
declare namespace invtdata="http://www.mrbook.com/InventoryData";
copy $oldInvtData := $oldXml
modify
(
for $mpf in $newXml/invtdata:INVT_DATA/*
let $oldMpf := $oldInvtData/invtdata:INVT_DATA/*[name()=name($mpf)]
return if(exists($oldMpf)) then
replace node $oldMpf with $mpf
else insert node $mpf into $oldInvtData
)
return $oldInvtData
내가 다른 비슷한 문제를 검색하고 this을 찾았지만, 그 무엇에 대한 과잉 꽤입니다 나하고 싶어. 어떤 제안? 도움이된다면 Oracle XML DB 버전 11.2.0.3에서 XmlQuery를 사용하고 있습니다.
'name()'은 종종 이와 같은 문제를 일으 킵니다. 예상 한 네임 스페이스 접두어를 반환하지 않는 경우가 많습니다. 나는 그것을'localname()'으로 바꾸고 그것이 작동 하는지를 보려고한다. 네임 스페이스가 관련된 경우 다른 조건 자 (또는 절)를 추가하여 비교할 수 있습니다. –