#xml #xpath #xquery
#xml #xpath #xquery
Вопрос:
Я хочу перебрать каждый узел в xml-документе и вернуть true, если узел равен определенному строковому значению, и false, если нет. Вывод должен быть похож на:
True False False True True True
True — это когда имя узла соответствует строке.
Спасибо.
Комментарии:
1. Пожалуйста, отредактируйте свой вопрос и добавьте репрезентативный образец вашего xml, а также строку, с которой вы хотите протестировать.
Ответ №1:
Я понимаю ваш вопрос как //*/(. instance of element(foo)
или for $el in //* return $el instance of element(foo)
(где foo
будет имя элемента, который вы ищете).
Однако вы не могли бы передать его в виде строки, для этого вам понадобится declare $name as xs:string external := 'foo'; //*/(local-name() = $name)
.
Ответ №2:
Если мы воспринимаем ваш вопрос буквально, это
(//node()) ! (if (. = 'a certain string value') then 'True' else 'False'
Но я подозреваю, что под «узлом» вы действительно подразумеваете элемент (в этом случае это так //*
), и возможно, что под «совпадениями» вы подразумеваете что-то другое, кроме «=».