Obtenir les données XML dans la fonction XPath personnalisée
Question
Existe-t-il un moyen d'obtenir les données XML actuelles lorsque nous créons notre propre fonction XPath personnalisée (voir ici).
Je sais que vous avez accès à un XPathContext
mais est-ce suffisant?
Exemple:
Notre XML:
<foo>
<bar>smang</bar>
<fizz>buzz</fizz>
</foo>
Notre XSL:
<xsl:template match="/">
<xsl:value-of select="ourFunction()" />
</xsl:template>
Comment obtient-on l'intégralité de l'arborescence XML?
Modifier: Pour préciser: je crée une fonction personnalisée qui exécute ensuite du code Java statique (c'est une fonctionnalité saxonne). Ainsi, dans ce code Java, je souhaite pouvoir obtenir des éléments de l’arborescence XML, tels que bar et fizz, et leur CDATA, tels que smang et buzz.
La solution
Essayez de changer votre XSL pour appeler "notreFonction (/)". Cela devrait transmettre le nœud racine à la fonction. Tu pourrais aussi essayer. ou ..
Vous aurez probablement besoin de changer la signature de la fonction d'implémentation, je laisserai quelqu'un d'autre vous aider.
Autres conseils
Qu'en est-il de sélectionner le noeud actuel en sélectionnant les données pertinentes du noeud actuel dans un paramètre XSL et en transmettant ce paramètre à la fonction? J'aime:
<xsl:value-of select="ourFunction($data)" />