Если я правильно прочитал ваш вопрос, то вам нужен скорее «волшебный» (как в простом) способ перестановки узлов в соответствии с внешним XSD, а не как способ перемещения узлов с использованием некоторого XMLAPI.
Если это правда, то я не знаю ни одного API, который бы предоставлял общий способ достижения такой цели.Это также не тривиальная часть программирования, учитывая сложность моделей контента, которые XSD может описать.
Это также, при очень простых обстоятельствах, практически невозможно решить.Подумайте об этом очень простом примере: представьте модель контента, состоящую из двух вариантов: i) последовательность a - b - c, ii) последовательность b - c - a.Содержимое XML поступает в порядке c - b - a (согласно вашему требованию вы хотите использовать недопустимый XML и сделать его действительным).В этом примере, как правильно это сделать?
Конечно, я не говорю, что это ваш сценарий.Я просто пытаюсь указать, почему, насколько мне известно, никто не придумал решения такой проблемы.
Если ваша модель контента в последовательности довольно тривиальна, что позволяет однозначноспособ ее решения независимо от последовательности, в которую поступает ваш XML, или если контент XML поступает известным, но неправильным образом, все время, тогда вам придется кодировать его, используя предпочтительный подход к манипулированию XML - но я бы предложил, не пытайтесь сделать его родовым, он просто спускается в кроличью нору;) ....