2010-02-10 10 views
5

Mam trochę JavaScript, który musi zastosować xslt do wyniku żądania ajax. Xslt jest zdefiniowany w osobnym pliku "transform.xslt" - jaki jest najlepszy sposób na dołączenie xslt na mojej stronie?Dołącz arkusz stylów xslt na stronie html

Czy można użyć jakiegoś elementu o nazwie <link..., czy też muszę osobno wygenerować oddzielne żądanie http dla xslt?

+0

Jestem zainteresowany (akademickim) w odpowiedzi na to pytanie. Podejrzewam, że jest to poza twoją bezpośrednią kontrolą: serwer musi odesłać główną treść z odpowiednim typem MIME, a dokument XML wymaga odniesienia do arkusza stylów xslt z nagłówkiem "". Mając to na uwadze, myślę, że przeglądarka dokona transformacji i wtedy twój dokument uzyska wynik. ALE to tylko domysły. – Pointy

Odpowiedz

2

Myślę, że musisz użyć XMLHttpRequest, aby załadować arkusz stylów z serwera, następnie masz responseXML i możesz go użyć z interfejsami API transformacji XSLT, które przeglądają przeglądarki JavaScript (na przykład importStylesheet z Mozillą i transformNode z IE).

O ile nie wybierzesz opcji IE tylko w przypadku, gdy możesz użyć XML data island przy użyciu np.

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

w sekcji head dokumentu HTML. Wtedy Twój skrypt mógłby użyć np. someResponseXML.transformNode(sheet1.XMLDocument).

+0

Więc nie myślisz, że przeglądarka dokonałaby niejawnie transformacji, gdyby plik XML miał właściwy nagłówek? Oczywiście masz rację, jeśli XML był zwykłym XML-em bez odniesienia do arkusza stylów. – Pointy

+0

Pierwotne pytanie mówi "zastosuj xslt do wyniku zapytania ajax". W moim rozumieniu oznacza to, że skrypt otrzymał obiekt responseXML i chce teraz zastosować arkusz stylów XSLT. Aby to zrobić, musisz najpierw załadować arkusz stylów za pomocą skryptu. Oczywiście jeśli nie załadujesz oryginalnego pliku XML za pomocą skryptu i XMLHttpRequest, ale zamiast tego załadujesz go w oknie lub ramce, możesz oczekiwać, że przeglądarka zastosuje dowolny arkusz stylów, do którego odwołuje się instrukcja przetwarzania xml-stylesheet. Ale dzieje się tak tylko wtedy, gdy kod XML jest ładowany do ramki/okna, a nie, jeśli został załadowany za pomocą XMLHttpRequest. –

Powiązane problemy