element () vs. node () en XQuery

Puede alguien decirme la diferencia exacta entrenode() yelement() tipos en XQuery? La documentación indica queelement() es un nodo de elemento, mientras quenode() es cualquier nodo, así que si lo entiendo correctamenteelement() es un subconjunto denode().

Lo que pasa es que tengo una función XQuery como esta:

declare function local:myFunction($arg1 as element()) as element() {
    let $value := data($arg1/subelement)
   etc...
};

Ahora quiero llamar a la función con un parámetro que se obtiene por otra función, digamosfunctionX (sobre el cual no tengo control):

let $parameter := someNamespace:functionX()
return local:myFunction($parameter)

El problema es,functionX devuelve unnode() así que no me dejará pasar el$parameter directamente. Traté de cambiar el tipo de mi función para tomar unnode() en lugar de unaelement(), pero parece que no puedo leer ningún dato de él. @$value está vacío.

¿Hay alguna forma de convertir el nodo en un elemento o simplemente me falta algo?

EDITAR Por lo que puedo decir, el problema está en la parte donde trato de obtener el subelemento usando$arg1/subelement. Aparentemente puedes hacer esto si$arg1 es unelement() pero no si es unnode().

ACTUALIZAR He probado el ejemplo proporcionado por Dimitre a continuación, y de hecho funciona bien, tanto con Saxon como con eXist DB (que es lo que estoy usando como motor XQuery). El problema realmente ocurre con larequest:get-data() función de eXist DB. Esta función obtiene los datos proporcionados por la solicitud POST cuando se usa eXist a través de REST, los analiza como XML y los devuelve comonode(). Pero por alguna razón cuando paso los datos a otra función, XQuery no reconoce que sea una @ válielement(), aunque lo sea. Si lo extraigo manualmente (es decir, copie el resultado y lo pegue en mi código fuente), asígnelo a una variable y páselo a mi función, todo saldrá bien. Pero si lo paso directamente me da un error de tiempo de ejecución (y de hecho falla elinstance of prueba)

ecesito poder hacer que ignore esta verificación de tipo o "escribir" los datos en unaelement().

Respuestas a la pregunta(6)

Su respuesta a la pregunta