Erster die XML-Daten in Benutzerdefinierte XPath-Funktion
Frage
Gibt es eine Möglichkeit, die aktuellen XML-Daten zu erhalten, wenn wir unsere eigene XPath-Funktion (siehe hier) zu machen.
Ich weiß, dass Sie Zugriff auf ein XPathContext
haben aber ist das genug?
Beispiel:
Unsere XML:
<foo>
<bar>smang</bar>
<fizz>buzz</fizz>
</foo>
Unsere XSL:
<xsl:template match="/">
<xsl:value-of select="ourFunction()" />
</xsl:template>
Wie bekommen wir den gesamten XML-Baum?
Edit: Zur Klarstellung: Ich erstelle eine benutzerdefinierte Funktion, die statischen Java-Code ausgeführt endet (es ist ein Sachse Funktion). Also, in diesem Java-Code, ich möchte der Lage sein, Elemente aus der XML-Struktur zu erhalten, wie eine Bar und Fizz, und ihre CDATA, wie smang und Buzz.
Lösung
Versuchen Sie XSL zu ändern, so dass Sie 'ourFunction (/)' nennen. Das sollte den Wurzelknoten an die Funktion übergeben. Sie könnten auch versuchen. oder ..
Sie werden vermutlich benötigen die Unterschrift der implementierenden Funktion zu ändern, ich werde jemand anderes helfen mit, dass lassen.
Andere Tipps
Was den aktuellen Knoten wählen die relevanten Daten aus dem aktuellen Knoten in einem XSL-Parameter auswählen und geben, dass der Parameter an die Funktion? Wie:
<xsl:value-of select="ourFunction($data)" />