#xml #xquery
#xml #xquery
Вопрос:
Вот xml:
<?xml version = "1.0"?>
<class>
<student>
<firstname>Dinkar</firstname>
<lastname>Kad</lastname>
<nickname>Dinkar</nickname>
<marks>85</marks>
</student>
</class>
Я хочу написать XQuery, который возвращает :
firstname
lastname
nickname
marks
логически это должно сработать :
/class/student/*::name()
Но это не работает!
Знаете ли вы, какой правильный XQuery для получения списка имен дочерних узлов?
Ответ №1:
Вы можете вернуть имена дочерних узлов с помощью следующего кода:
for $nam in doc("source.xml")/class/student/*
return name($nam)
Или вы можете использовать это более простое выражение:
/class/student/*/name()
Это работает только с XPath-2.0, который поддерживается XQuery 1.0.
Комментарии:
1. Мне нужен один оператор XQuery. Это не инструкция XQuery.
2. Я тестировал это с помощью Saxon. Оба выражения работают и возвращают желаемый результат.
3. ОК. Я хочу запустить его с XML версии 1.0. у нас нет сторонних библиотек.
4. когда я запускаю /class / student /*/name () , я получаю ошибку в notepad или VisualStudio.
5. XQuery 1.0 должен поддерживать XPath-2.0, потому что «Модель данных XQuery и XPath (XDM) — это модель данных, совместно используемая языками программирования XPath 2.0, XSLT 2.0 и XQuery». . Если этого не происходит, это не XQuery.