Сортировка атрибутов в каждом узле в XML
У меня есть такой XML
<root>
<aree fbc="123" ad="12" b="123"/>
<beee c="12" a="144"/>
</root>
Нужно отсортировать имена атрибутов по алфавиту. Как это:
<root>
<aree ad="12" b="123" fbc="123"/>
<beee a="144" c="12"/>
</root>
У меня есть код xQuery, но он не работает правильно. Помогите с этим, пожалуйста. Мне нужно заменить на реальное имя узла
select @data.query('<root>{for $i in root/* return <aaa> {for $j in $i/@* order by local-name($j) return $j} </aaa> }</root>')
1 ответ
В Рекомендации XML сказано, что порядок атрибутов XML незначителен:
Обратите внимание, что порядок спецификаций атрибутов в начальном теге или теге пустого элемента не имеет значения.
Поэтому инструменты XML, как правило, не заботятся о порядке следования атрибутов, и если вы не заинтересованы в нормализации / канонизации XML 1, то и вы не должны.
1 Об этих редких случаях см. В разделе об обработке атрибутов в Рекомендации по нормализации XML или Рекомендации Canonical XML.