I am generating a XML file from a SQL Server query.
I have some problem about sorting elements issues.
For example, there is simple code as below.
If you want to reorder existing xml, you can use XQuery:
declare @data xml = '
'
select @data.query('{for $i in test/* order by $i/@abc return $i} ')
Result:
sql fiddle demo
update:
To reorder multiple nodes, you can use XQuery like this:
select @data.query('
element Main {
for $j in Main/test
return element test {
for $i in $j/* order by $i/@abc return $i
}
}
')
sql fiddle demo
update 2
To order by integer values of attributes, use cast as
select @data.query('
element Main {
for $j in Main/test
return element test {
for $i in $j/* order by $i/@abc cast as xs:integer?
return $i
}
}
')
sql fiddle demo