在SQL Server中创建XML节点时设置属性的优先级

在SQL Server中创建XML节点时设置属性的优先级,sql,sql-server,xml,Sql,Sql Server,Xml,我使用以下代码创建xml节点: set @imageListXml = ( select 'IMG' + CAST( m.entry_id AS VARCHAR) as '@id', (select title from titles where entry_id=m.tid) as 'textelements/title', 'TEST' as 'references/reference/@body', 'IMG' +

我使用以下代码创建xml节点:

set @imageListXml = (
    select 
        'IMG' + CAST( m.entry_id AS VARCHAR) as '@id',
        (select title from titles where entry_id=m.tid) as 'textelements/title',
        'TEST' as 'references/reference/@body',
        'IMG' + CAST( m.entry_id AS VARCHAR) as 'references/reference/@value'

     from media m   

        )
    FOR XML PATH('image'), root('imagelist')
    )
这就产生了这样的结果:

<imagelist>
  <image id="IMG1111">
    <textelements>
       <title>Test 1111</title>
    </textelements>
    <references>
      <reference body="TEST" value="IMG1111" />
    </references>
  </image>
</imagelist>

测试1111
如何将value属性放在第一位,反之亦然?我认为这取决于我在select语句中首先声明的内容。我说得对吗

set @imageListXml = (
  select 'IMG' + CAST( m.entry_id AS VARCHAR) as '@id',
    (select title from titles where entry_id=m.tid) as 'textelements/title',
    'IMG' + CAST( m.entry_id AS VARCHAR) as 'references/reference/@value',
    'TEST' as 'references/reference/@body' 
  from media m
  FOR XML PATH('image'), root('imagelist')
)
将在
正文
属性之前返回
属性。但是,我不认为这是在任何地方指定的,因为XML元素中的属性是无序的。它们总是按名称引用,从不按索引引用


这就是说,有些排序比其他排序更容易让人阅读/更美观,因此,如果人们关注生成的XML,那么确保更好的属性排序是有意义的。

根据XML标准,元素中的属性顺序与XML无关。