MarkLogi c как заменить указанный атрибут в узле - PullRequest
1 голос
/ 22 января 2020

Как заменить атрибут num = "3" на num = "000" пример:

 <meta:Descriptors xmlns:sup="http://next.com/record" xmlns:meta="http://next.com/record/meta">
    <meta:Descriptor Num="1">test 1</meta:Descriptor>
    <meta:Descriptor Num="2">test 2</meta:Descriptor>
    <meta:Descriptor Num="3">test 3</meta:Descriptor>
    <meta:Descriptor Num="4">test 4</meta:Descriptor>
 </meta:Descriptors>

Я пытаюсь xdmp: node-replace (). Однако все @Num изменится на «000». Как можно только изменить атрибут Num = "3" на Num = "000".

 xdmp:node-replace(fn:doc("test.xml")/data:record//meta:Descriptor/@Num,attribute {"Num"} {"000"})

результат:

<meta:Descriptors xmlns:sup="http://next.com/record" xmlns:meta="http://next.com/record/meta">
    <meta:Descriptor Num="000">test 1</meta:Descriptor>
    <meta:Descriptor Num="000">test 2</meta:Descriptor>
    <meta:Descriptor Num="000">test 3</meta:Descriptor>
    <meta:Descriptor Num="000">test 4</meta:Descriptor>
 </meta:Descriptors>

1 Ответ

3 голосов
/ 22 января 2020

Попробуйте изменить XPath, чтобы выбрать указанный атрибут c, который должен измениться, например:

fn:doc("test.xml")//meta:Descriptor/@Num[string(.) eq "3"]

Надеюсь, что поможет,

...