У меня есть следующий узел, в который я хочу добавить атрибут для всех узлов add
.Как добавить атрибут ко всем отдельным дочерним элементам узла
<test>
<add>x1</add>
<c><add>x2</add></c>
<b att1="x">x</b>
</test>
Я попытался
functx:add-attributes($test, xs:QName('att1'), 1)
Это может добавить атрибут к test
узла. Но
Когда я попытался
functx:add-attributes($test/add, xs:QName('att1'), 1)
Он добавил атрибут первого добавления узла, но возвращает только добавить узел с добавлением атрибута. Затем, когда я попытался с $test//add
, он выдает ошибку.
Когда я попытался
for $add in $test//add
return functx:add-attributes($add, xs:QName('att1'), 1)
возвращает два добавления узлов в отдельности. Теперь, как реструктурировать исходный узел, чтобы добавить атрибуты только к указанным узлам.
Я не хочу, чтобы изменить значение в БД. Я хочу получить значение, и я хочу реструктурировать его с помощью некоторых пользовательских атрибутов и представить его для преобразования. Я попробовал второй подход, но строка $ node/node()! local: change (.) вызывает ошибку. Я не уверен в использовании оператора «!». Это ошибка «Неожиданная синтаксическая ошибка маркера, неожиданный Junk_, ожидающий Comma_ или Rbrace_». Я пытался изменить его разными способами, но он не работает. Ответьте, пожалуйста. Я также попытаюсь заставить его работать. – Karthick
Какую версию MarkLogic вы используете? «!» оператор является относительно новым. Вы можете заменить эту строку 'for $ n в $ node/node() return local: change ($ n)' –
Большое спасибо, это сработало. В офисе мы используем ML7. Я попробовал этот образец в своем доме, где у меня только был ML5. В ML7 он работает. – Karthick