2010-02-10 10 views
5

Ich habe einige JavaScript, die eine Xslt zum Ergebnis einer Ajax-Anforderung anwenden muss. Das xslt ist in einer separaten Datei definiert "transform.xslt" - was ist der beste Weg, um die XSLT in meine Seite aufzunehmen?Fügen Sie einen XSLT-Stylesheet in einer HTML-Seite

Ist es möglich, eine Art von <link... Element zu verwenden, oder muss ich eine separate HTTP-Anfrage für die xslt selbst machen?

+0

Ich bin interessiert (akademisch) in der Antwort auf diese Frage. Mein Verdacht ist, dass es nicht Ihrer direkten Kontrolle unterliegt: Der Server muss den primären Inhalt mit dem richtigen MIME-Typ zurücksenden, und das XML-Dokument benötigt einen Verweis auf das XSLT-Stylesheet mit einem Header "". Mit diesem würde ich denken, dass der Browser die Umwandlung durchführen würde und dass dann Ihr Dokument das Ergebnis bekommen würde. Aber das ist nur eine Vermutung. – Pointy

Antwort

2

Ich denke, Sie müssen XMLHttpRequest verwenden, um das Stylesheet vom Server zu laden, dann haben Sie die responseXML und Sie können diese mit den XSLT-Transformations-APIs verwenden, die die Browser Javascript aussetzen (z. B. importStylesheet mit Mozilla und transformNode mit IE).

Es sei denn, Sie zielen IE nur ab, wo Sie eine XML data island mit z.

<xml id="sheet1" src="sheet.xslt></xml> 

im Kopfbereich Ihres HTML-Dokuments. Dann könnte Ihr Skript z.B. someResponseXML.transformNode(sheet1.XMLDocument).

+0

Sie glauben also nicht, dass der Browser die Transformation implizit ausführen würde, wenn die XML den richtigen Header hätte? Natürlich haben Sie Recht, wenn das XML einfach nur XML ohne Stylesheet-Referenz ist. – Pointy

+0

Die ursprüngliche Frage lautet "Anwenden eines XSLT auf das Ergebnis einer AJAX-Anfrage". In meinem Verständnis bedeutet das, dass das Skript ein responseXML-Objekt erhalten hat und nun ein XSLT-Stylesheet anwenden möchte. Dazu muss das Stylesheet zuerst mit Skript geladen werden. Wenn Sie die ursprüngliche XML-Datei nicht mit script und XMLHttpRequest laden, sondern stattdessen in ein Fenster oder einen Frame laden, können Sie erwarten, dass der Browser alle Stylesheets anwendet, auf die in einer XML-Stylesheet-Verarbeitungsanweisung verwiesen wird. Dies geschieht jedoch nur, wenn der XML-Code in ein Frame/Fenster geladen wird, nicht wenn er mit XMLHttpRequest geladen wurde. –

Verwandte Themen