Article View: pl.comp.xml
Article #67Re: Ramki
From: Grzegorz Balnis
Date: Sat, 09 Sep 2000 12:24
Date: Sat, 09 Sep 2000 12:24
84 lines
5385 bytes
5385 bytes
To moj pierwszy kontakt z pl.comp.xml, wiec witam wszystkich listowiczów. A propos problemu z XSL: sadze, ze XSL (albo precyzyjniej: XSLT) moze okazac sie srednio uzyteczny, gdy chcemy zeby to browser dokonywal przetwarzania XSLT. Stad problemy, o ktorych piszecie. Natomiast uzyty wewnatrz aplikacji Webowej, po stronie serwera, moze zdzialac cuda. Oczywiscie, jesli to serwer wykonuje przetwarzanie XSLT, nie ma przeszkod, by dynamicznie okreslic XSLT, ktory ma byc uzyty do transformacji. Malo tego, poniewaz dokument XSLT jest rowniez dokumentem XML (ma drzewo DOM), moze zostac latwo zmodyfikowany przed zastosowaniem (sposob na parametryzacje). Procesor XSLT i tak zwykle "otrzymuje" dokument XSLT jako serie zdarzen SAX albo drzewo DOM z parsera XML a nie jako dokument tekstowy. Jest tez bardziej elegancki sposob, ktory widzialem w dzialaniu: arkusz XSLT, ktory jest uzywany do transformacji naszego XMLa z danymi jest tworzony dynamicznie przez inna transformacje XSLT (w rzeczywistosci to ciag kolejnych transformacji). W tym przypadku KOMPLETNA logika aplikacji jest zapisana w XSLT! To na prawde dziala (OK, troche wolno). To tyle tytulem "obrony" XSLT. Problem Karola wymaga dynamicznego okreslania transformacji XSLT i wtedy oczywiscie dokument XML z danymi moze (i powinien) byc jeden. W zaleznosci od stopnia zlozonosci na serwerze moze byc jeden XSLT, trzy, albo wcale (!). Ale raczej bedzie to trudne uzywajac mechanizmow MSIE (zwlaszcza, ze jego procesor XSLT jest, delikatnie mowiac, taki sobie :-), ale... ...widzialem kiedys cos podobnego, wiec jesli koniecznie chesz... W MSIE jest mozliwosc (nie znam szczegolow) dobrania sie do drzewa DOM arkusza XSL, ktory jest uzywany do transformacji wyswietlanego aktualnie XMLa, z mozliwoscia modyfikacji wezlow (specjalnie nie pisze XSLT, bo MSIE nie widzi roznicy). Nie wiem, czy da sie to zrobic z JavaScripta. Zalozmy, ze tak - inaczej mialo by ograniczony sens. Zatem ladujesz dokument XML z podlaczonym na sztywno (zawsze tym samym) arkuszem XSL, ktory transformuje XML do HTML wrzucajac do niego potrzebny kod JavaScript. Kod ten modyfikuje drzewo DOM uzywanego XSL, tworzac (w pamieci rzecz jasna) wlasciwie nowy arkusz XSL - usuwa wiekszosc wezlow (w szczegolnosci ten, ktory oryginalnie wstawial kod JavaScript) i wstawia takie, jakie uwaza za potrzebne (dynamicznie! - inne dla jednej ramki, inne dla drugiej itd.). Ta modyfikacja powoduje z kolei zmiane HTMLa, ktory jest wyswietlany. Cool ;-) Ale uwaga, pokazywal to koles z Microsofta ze Stanow, wiec nie mam pewnosci, czy ten mechanizm da sie zastosowac w praktyce (bardzo watpie) Ale robilo wrazenie. :-) Jesli uda Ci sie to zrobic, koniecznie sie pochwal. Przetwarzanie po stronie przegladarki ma jeszcze jedna wade (zwlaszcza w przykladzie Marcina z ksiazka). Kazda transformacja XSL wymaga zaladowania do browsera calego dokumentu XML, ktory ma byc przetworzony. Troche bez sensu ladowac cala ksiazke, gdy chcesz tylko pokazac spis tresci... Pozdrowienia Grzegorz Balnis Marcin Jagodzinski napisał(a) w wiadomości: ... >On Fri, 1 Sep 2000 09:48:32 +0200, "Karol" <karsc@yoyo.pl> wrote: > >>Mam dokument XML plus XSL i DTD. XSL jest tak stworzony, ze zawiera dwie >>ramki (HTML). Do kazdej ramki w HTML trzeba ladować osobny dokument zatem >>musialem utworzyc trzy rozne pliki XSL ale czy musze w zwiazku z tym tworzyc >>trzy pliki XML z takimi samymi danymi czy moge skorzystac z jednego głownego >>pliku XML i dynamicznie ladowac odwołania do poszczegolnych plikow XSL. >>Jesli tak to w jaki sposob? >> >No i tu masz problem :-) > >Wszyscy się zachwycaj? tym jak to XSL pozwala na podział na wygl?d i tre?ć, >tymczasem moim zdaniem jest tu spore nieporozumienie. Skoro w XML-u na >sztywno podajesz, jakim arkuszem zamierzasz go przetworzyć, to niby gdzie >jest ten podział? Chyba, że chodzi o podział na dwa dokumenty, ale to nie >jest jeszcze to. > >Wracaj?c do Twojego pytania: zależy czego używasz, jako engine do XSLa. >Musisz się zorientować, czy da się przekazać nazwę arkusza jako parametr. I >tyle. > >Jeszcze lepsza jest zabawa jak masz np. jeden długi XML (powiedzmy ksi?żkę >podzielon? na rozdziały) i chcesz pokazywać po 1 rozdziale na raz. Czyli >masz 1 XML, 1 XSL -- ale z użyciem parametrów w tym drugim. Ciekawe... jak >do takiego procesora XSLT jaki jest w MSIE przekazać parametr... > >Marcin Jagodzinski >(or compatible)
Technical Details
Message-ID:
<8pda70$rfg$1@news.ipartners.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!warszawa.rmf.pl!news.rmf.pl!news.onet.pl!newsfeed.silweb.pl!news.us.edu.pl!news.nask.pl!news.ipartners.pl!not-for-mailReferences:
<8onme0$cma$1@sunflower.man.poznan.pl> <n3p2rss3qbeh14ehl91g73ttuhn0luik9c@4ax.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!warszawa.rmf.pl!news.rmf.pl!news.onet.pl!newsfeed.silweb.pl!news.us.edu.pl!news.nask.pl!news.ipartners.pl!not-for-mail From: "Grzegorz Balnis" <gbalnis@abc.com.pl> Newsgroups: pl.comp.xml Subject: Re: Ramki Date: Sat, 9 Sep 2000 14:24:52 +0200 Organization: Internet Partners Lines: 86 Message-ID: <8pda70$rfg$1@news.ipartners.pl> References: <8onme0$cma$1@sunflower.man.poznan.pl> <n3p2rss3qbeh14ehl91g73ttuhn0luik9c@4ax.com> NNTP-Posting-Host: 157.25.192.162 X-Trace: news.ipartners.pl 968502304 28144 157.25.192.162 (9 Sep 2000 12:25:04 GMT) X-Complaints-To: abuse@ipartners.pl NNTP-Posting-Date: 9 Sep 2000 12:25:04 GMT X-Newsreader: Microsoft Outlook Express 4.71.1712.3 X-MimeOLE: Produced By Microsoft MimeOLE V4.71.1712.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit