У меня есть следующие данные XML в SQLServer 2008 R2
DECLARE @data XML
SET @data = '<root attr1="val1" attr2="val2" attr3="val3"/>'
Я хотел бы получить список имен атрибутов из корня и вывести его в виде списка элементов, например:
<root>
<attr1>val1</attr1>
<attr2>val2</attr2>
<attr3>val3</attr3>
</root>
Я играл с запросами FLWOR, чтобы получить то, что я хочу.Пока у меня есть это:
SELECT @data.query('
for $attr in /*/@*
return <test>{fn:string($attr)}</test>
')
Это нормально и почти то, что мне нужно, но когда я пытаюсь это сделать ...
SELECT @data.query('
for $attr in /*/@*
return <{fn:local-name($attr)}>{fn:string($attr)}</{fn:local-name($attr)}>
')
это не радует.Кажется, ему не нравится ничего, кроме жестко закодированного имени элемента.
Как я могу вернуть элемент с вычисленным именем?