20.13.5 | Hilfsklassen |
Es ist oft nötig, Verknüpfungen in XSLT-Dateien aufzulösen, beispielsweise wenn in einer XSLT-Datei ein Include-Statement aufgeführt wird. In diesem Fall muss man der TemplateFactory mitteilen, wo bestimmte Verknüpfungen (Dateien oder URLs) zu finden sind.
Zu diesem Zweck dient das Interface URIResolver. Mit der Implementierung dieses Interface aus dem Paket javax.xml.transform kann eine eigene Logik zur Auflösung externer Referenzen implementiert werden. Das folgende Beispiel zeigt eine anonyme Implementierung von URIResolver, die Pfade relativ zu c:\temp auflöst:TransformerFactory.newInstance().setURIResolver( new URIResolver() { public Source resolve(String href, String base) { // Alle inkludierten Dateien liegen // relativ zu c:\temp return new StreamSource( new File ("c:\\temp\\"+href)); } });Ist im Stylesheet nun ein Statement wie<xsl:include href="include.xsl"/>vorhanden, wird die Datei c:\temp\include.xsl geladen.
Exakt den gleichen Mechanismus gibt es auch beim Transformer, damit dieser Referenzen auf andere Quellen in einer XML-Datei auflösen kann.
Die Konstanten der Klasse OutputKeys dienen dazu, die Ausgabe einer Transformation zu verändern. Hierzu wird eine der Konstanten neben dem entsprechenden Wert an die Methode setOutputProperty(String key, String value) der Klasse Template übergeben. Das folgende Beispiel bestimmt HTML als Ausgabeformat:t.putProperty(OutputKeys.METHOD, "html");