2016-03-29 2 views
0

Ich habe eine xml Datei von der folgenden Form:Java: Kann ich eine XSLT-Transformation basierend auf dem href-Attribut durchführen?

<?xml version='1.0' encoding="ISO-8859-1"?> 
<?xml-stylesheet href="/path/to/transformer.xsl" type="text/xsl"?> 
Content... 

Wenn ich die Datei in einem Browser öffnen, automatisch analysiert auf /path/to/transformer.xsl korrekt berechnet.

Ich möchte ein Java-Programm schreiben, das einen Pfad zu einer Datei xml nimmt und html Ausgabe basierend auf dem href Attribut in xml-stylesheet. In Pseudo-Code:

private void transform(String inputPath, String outputPath) { 
    // Open a xml file found in inputPath 
    // Perform an XSLT transformation based on the href attribute 
    // Write the result to a html file in outputPath 
} 

Ich bin mir bewusst, dass dies wahrscheinlich, indem sie den Attributwert mit einem regulären Ausdruck getan werden könnte, aber ich war auf der Suche nach einer sauberere Art und Weise tun. Ich möchte das ganze xml-stylesheet betrachten und die Transformation so durchführen, wie der Browser es tut.

Antwort

0

Im JAXP API, TransformerFactory.getAssociatedStylesheet() wird das Quelldokument als Eingabe nehmen und ein Source Objekt für das Sheet in der xml-stylesheet Verarbeitungsanweisung referenzierten zurückzukehren. Sie können dieses Stylesheet dann wie gewohnt mit factory.newTemplates() oder factory.newTransformer() kompilieren.

Saxon s9api Schnittstelle hat eine ähnliche Methode XsltCompiler.getAssociatedStylesheet().

Verwandte Themen