OPENXML を使用して一部の xml を解析しています。ノードの順序を知るために、XML から ID を取得する必要があります。
@mp:id は常に順番どおりですか? それらが連続していないことは知っていますが、少なくとも順序は正しいですか?
たとえば、次のクエリは常にXML とまったく同じ順序で結果を生成しますか?
SELECT row_number() OVER (ORDER BY OrderID) rn,
StepID, CONVERT(varchar(max), CONVERT(VARBINARY(max), StepID), 2),
[ACTION]
FROM OPENXML(@idoc, 'descendant::step |descendant::compref', 2)
WITH ([OrderID] INT '@mp:id',
[StepID] INT '@id',
[Action] VARCHAR(max) 'parameterizedString[1]')
ORDER BY rn
それとも @mp:id は、保存方法に基づいて任意の順序で移動できるメタデータのようなものですか?