¿El método `nodes ()` mantiene el orden del documento?

Hace elnodes() método de laxml ¿Nodos de retorno de tipo de datos en el orden del documento?

Por ejemplo, si hay datos como:

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

que se consulta como

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

¿Se devolverán los elementos en el orden del documento? Orden de filas devuelto porselect se sabe que está indefinido siorder by Se omite la cláusula. Es el caso deselect ... from ... .nodes(), o es excepcional?

¿Es posible en algunas circunstancias obtener un conjunto de filas no vacías en la salida de la siguiente consulta:

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta