2008-09-16 9 views
4

Gibt es eine Möglichkeit, die aktuellen XML-Daten zu erhalten, wenn wir unsere eigene benutzerdefinierte XPath-Funktion erstellen (siehe hier).Die XML-Daten in die benutzerdefinierte XPath-Funktion importieren

Ich weiß, dass Sie Zugang zu einem 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 können wir die gesamte XML-Struktur erhalten?

Bearbeiten: Um zu verdeutlichen: Ich erstelle eine benutzerdefinierte Funktion, die endet, Ausführen von statischen Java-Code (es ist eine Saxon-Funktion). Daher möchte ich in diesem Java-Code Elemente aus der XML-Baumstruktur, wie z. B. bar und fizz, und deren CDATA wie smang und buzz abrufen können.

Antwort

1

Versuchen Sie, Ihre XSL so zu ändern, dass Sie 'unsereFunktion (/)' anrufen. Das sollte den Wurzelknoten an die Funktion übergeben. Du könntest es auch versuchen. oder ..

Sie werden vermutlich die Signatur der implementierenden Funktion ändern müssen, ich lasse jemand anderen dabei helfen.

1

Was ist mit Wählen Sie den aktuellen Knoten Wählen Sie die relevanten Daten aus dem aktuellen Knoten in einen XSL-Parameter, und übergeben Sie diesen Parameter an die Funktion? Wie:

<xsl:value-of select="ourFunction($data)" /> 
Verwandte Themen