Xquery를 사용하여 XML 예제에서 표현 된 방식으로 원하는 모든 특성 값을 수정하는 방법?Xquery를 사용하여 모든 요소 특성 값 수정
저는 Basex 7.6 Xquery 및 XML 데이터베이스 엔진을 사용하고 있습니다. 지금까지 나의 목적은 XML 파일 만 처리하는 것이 었습니다.
구조를 이미 가지고 :
<address ref="file1" title="title1">
<address ref="file1.1" title="title1.1">
<address ref="file1.1.1" title="title1.1.1"/>
</address>
<address ref="file1.2" title="title1.2">
<address ref="file1.2.1" title="title1.2.1"/>
<address ref="file1.2.2" title="title1.2.2">
<address ref="file1.2.2.1" title="title1.2.2.1"/>
<address ref="file1.2.2.2" title="title1.2.2.2"/>
</address>
</address>
</address>
<address ref="file2" title="title2"/>
그러나 나는 다음과 같이 있어야합니다 :
<address ref="mydir/file1" title="title1">
<address ref="mydir/file1.1" title="title1.1">
<address ref="mydir/file1.1.1" title="title1.1.1"/>
</address>
<address ref="mydir/file1.2" title="title1.2">
<address ref="mydir/file1.2.1" title="title1.2.1"/>
<address ref="mydir/file1.2.2" title="title1.2.2">
<address ref="mydir/file1.2.2.1" title="title1.2.2.1"/>
<address ref="mydir/file1.2.2.2" title="title1.2.2.2"/>
</address>
</address>
</address>
<address ref="mydir/file2" title="title2"/>
내가 원했던 방식의 첫 번째 요소를 변경 관리해야하지만, 여전히 수 Xquery 엔진이 받아들이는 방식대로 올바르게 가져올 수 없습니다.
BaseX 7.6에서이 코드로 첫 번째 요소를 변경했으며이를 모든 요소에 적용하는 방법을 찾지 못했습니다. 나는이 문제를 내려고 노력했다 방식에 대해
copy $c :=
(<address ref="file1" title="title1">
<address ref="file1.1" title="title1.1">
<address ref="file1.1.1" title="title1.1.1"/>
</address>
<address ref="file1.2" title="title1.2">
<address ref="file1.2.1" title="title1.2.1"/>
<address ref="file1.2.2" title="title1.2.2">
<address ref="file1.2.2.1" title="title1.2.2.1"/>
<address ref="file1.2.2.2" title="title1.2.2.2"/>
</address>
</address>
</address>
(:<address ref="file2" title="title2"/> WHY IS THIS NOT BY THE WAY ACCEPTED?:)
)
modify (
replace value of node $c/@ref with concat('mydir/', $c/@ref)
)
return $c
정보는 여기에서 찾을 수 있습니다 : http://docs.basex.org/wiki/XQuery_Update#Non-Updating_Expressions
내가 BaseX이 작업을 수행하기위한 좋은 도구입니다 느낌이있다. 나는 그걸하는 법을 알아낼 수 없다. 나는 재귀가 어떻게 든이 경우에도 대답이라고 생각한다. 내 조그마한 경험이 없기 때문에 아직도 그것을 이해할 수 없다.
미리 감사드립니다.
감사합니다. 나는 해결책에서 멀리 아니지만 여전히 마지막 킥이 필요하다는 것을 알았다. :) – sailfish