Problem: StylesheetRoot setInclude() geht nicht

Mnemo

Grünschnabel
Ich möchte folgendes in main.xsl per Programm dynamisch setzen:

<xsl:include href="style.xsl"/>

Geht das ?

main.xsl
<- hat die xsl anweisungen benötigt dafür aber style.xsl (die include-Anweisung in main.xsl möchte ich dynamisch im Programm setzen)

style.xsl
<- enthält die attributesets für main.xsl

daten.xml
<- XML Daten

Beim Ausführen des Codes wird ein Fehler geworfen, das er die Attributsets nicht finden kann, aber das style.xsl wurde in main.xsl per Programm includiert. Siehe unten.

Kann mir jemand sagen wieso das so nicht funktioniert.
Code:
package xalan;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.apache.xalan.processor.TransformerFactoryImpl;
import org.apache.xalan.templates.StylesheetRoot;
import org.xml.sax.InputSource;

public class Main {

	public static void main(String[] args){
		try {
			TransformerFactory factory = TransformerFactoryImpl.newInstance();
			SAXSource main = new SAXSource(new InputSource(Main.class.getResourceAsStream("main.xsl")));
			SAXSource sheet = new SAXSource(new InputSource(Main.class.getResourceAsStream("style.xsl")));
			StylesheetRoot stylemain = (StylesheetRoot)factory.newTemplates(main);
			StylesheetRoot stylesheet = (StylesheetRoot) factory.newTemplates(sheet);
			stylemain.setInclude(stylesheet);
			stylemain.recompose();
			Transformer transformer = stylemain.newTransformer();
			transformer.transform(new StreamSource(Main.class.getResourceAsStream("daten.xml")), new StreamResult(System.out));
		} catch (Exception e) {
			System.err.println("Fehler: " + e.getMessage());
			e.printStackTrace();
		}
	}

}
 

Neue Beiträge

Zurück