Можно ли использовать строковую переменную в качестве тега в 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]}
Другие вопросы по тегам