Obtener los datos XML dentro de la función XPath personalizada
Pregunta
¿Hay alguna manera de obtener los datos xml actuales cuando creamos nuestra propia función XPath personalizada (ver aquí)?
Sé que tienes acceso a un XPathContext
pero ¿es esto suficiente?
Ejemplo:
Nuestro XML:
<foo>
<bar>smang</bar>
<fizz>buzz</fizz>
</foo>
Nuestro XSL:
<xsl:template match="/">
<xsl:value-of select="ourFunction()" />
</xsl:template>
¿Cómo obtenemos el árbol XML completo?
Editar: Para aclarar:Estoy creando una función personalizada que termina ejecutando código Java estático (es una característica sajona).Entonces, en este código Java, deseo poder obtener elementos del árbol XML, como bar y fizz, y sus CDATA, como smang y buzz.
Solución
Intente cambiar su XSL para llamar a 'nuestraFunción(/)'.Eso debería pasar el nodo raíz a la función.También podrías intentarlo.o ..
Probablemente necesitarás cambiar la firma de la función de implementación; dejaré que alguien más te ayude con eso.
Otros consejos
Qué pasa seleccione el nodo actual ¿Seleccionar los datos relevantes del nodo actual en un parámetro XSL y pasar ese parámetro a la función?Como:
<xsl:value-of select="ourFunction($data)" />