Можно ли использовать строковую переменную в качестве тега в xquery
Могу ли я использовать что-то вроде следующего в xquery? В основном я хочу использовать строковую переменную в качестве тега. Я использую веб-урожай для извлечения данных. Любая помощь или указатели приветствуются.
declare variable $doc as node() external;
declare variable $tag as xs:string;
let $tag := $doc//div[@class=details]//tr[1]/td[1]
return
<$tag>{$doc//div[@class=details]//tr[1]/td[2]</$tag>
2 ответа
Решение
Используйте конструктор элемента element { $tag } { $content }
,
Есть две дополнительные проблемы с вашим запросом:
- Нет необходимости декларировать
$tag
как переменная, вы все равно это скрываете - Отсутствие закрывающих фигурных скобок перед конечным тегом
Этот код должен работать практически во всем, кроме MSSQL, который не поддерживает имена переменных в полях имен тегов конструктора элемента:
declare variable $doc as node() external;
let $tag := $doc//div[@class=details]//tr[1]/td[1]
return
element { $tag } { $doc//div[@class=details]//tr[1]/td[2] }
Да, это возможно с помощью конструкции element {}:
return element {$tag} {$doc//div[@class=details]//tr[1]/td[2]}