O método `nodes ()` mantém a ordem do documento?

Onodes() método doxml nós de retorno de tipo de dados na ordem do documento?

Por exemplo, se houver dados como:

declare @xml xml
set @xml = '<Fruits><Apple /><Banana /><Orange /><Pear /></Fruits>'

que é consultado como

select T.c.query('.')
from @xml.nodes('/Fruits/*') T(c)

Os elementos serão devolvidos na ordem do documento? Ordem das linhas retornadas porselect é conhecido por ser indefinido seorder by cláusula é omitida. É o caso deselect ... from ... .nodes()ou é excepcional?

É possível, em algumas circunstâncias, obter um conjunto de linhas não vazio na saída da consulta a seguir:

declare @xml xml
set @xml = '<Data><Element OrderNo="1" /><Element OrderNo="2" />'
  + '<Element OrderNo="3" /><Element OrderNo="4" />'
  + '<Element OrderNo="5" /></Data>'

select * from (
    select T.c.value('.', 'int') OrderNo1, 
      row_number() over (order by @@spid) OrderNo2
    from @xml.nodes('/Data/Element/@OrderNo') T(c)) sq
where OrderNo1 != OrderNo2

questionAnswers(1)

yourAnswerToTheQuestion