Insertar nodo XML en una posición específica de un documento existente

Tengo un documento XML existente con algunos nodos opcionales y deseo insertar un nuevo nodo, pero en una posición determinada.

El documento se parece a esto:

<root>
  <a>...</a>
  ...
  <r>...</r>
  <t>...</t>
  ...
  <z>...</z>
</root>

El nuevo nodo <s>...</s>) debe insertarse entre el nodo<r> y<t>, Resultando en

<root>
  <a>...</a>
  ...
  <r>...</r>
  <s>new node</s>
  <t>...</t>
  ...
  <z>...</z>
</root>

El problema es que los nodos existentes son opcionales. Por lo tanto, no puedo usar XPath para encontrar el nodo<r> e inserte el nuevo nodo después de él.

Me gustaría evitar el "método de fuerza bruta": busque en<r> hasta<a> para encontrar un nodo que exista.

También quiero preservar el orden, ya que el documento XML debe ajustarse a un esquema XML.

e pueden usar @XSLT así como las bibliotecas XML normales, pero como solo estoy usando Saxon-B, el procesamiento de XSLT consciente del esquema no es una opción.

Alguien tiene una idea sobre cómo insertar dicho nodo?

thx, MyKey_

Respuestas a la pregunta(6)

Su respuesta a la pregunta