[debata] Czy wysyłanie XML + XSLT do klienta jest dobre?

0

W wątku http://4programmers.net/Forum/viewtopic.php?id=84242 pojawiła się różnica zdań na temat tego, czy wysyłanie danych (XML) i instrukcji renderujących (XSLT) do klienta, aby sam sobie je wyświetlił jest podejściem dobrym.

Ja zastosowałem tę metodę na mojej podstronce: http://marooned.neostrada.pl/4prog/4p.xml

Wcześniej długo była to wersja czysto HTML [na serwerze nie ma żadnych języków server-side] i edycja, dodawnie czy zmiana fotki to grzebanie się w kodzie, dość niewygodne - dlatego aktualizacje były rzadkie..

Obecna wersja oparta o XML + XSLT + CSS sprawaia, że plik źródłowy ma banalną i przejrzystą konstrukcję, wygląd jest w osobnym pliku.

Powstaje pytanie - co ze starszymi przeglądarkami, które nie potrafią wyświetlić takich stron poprawnie. Takie pytanie pojawia się zawsze przy nowych technologiach i głównym argumentem jest fakt, że aby się rozwijać, iść z duchem czasu nie możemy utrzymywać za wszelką cenę kompatybilności w dół.

Jeśli coś staje się popularne, ludzie zaczynają tego używać, to wymusza na producentach oprogramowania [w tym przypadku przeglądarek] obsłużenie tego jeśli nie chcą stracić klientów.

Dlatego ja nie widzę przeciwskazań w stosowaniu tej technologii. Dwie najpopularniejsze przeglądarki (IE oraz oparte na Gecko: FF, Mozilla, ...) umieją sobie z tym poradzić, więc nie jest to aż taka nowinka, aby jej nie używać.

Zapraszam do debaty - i trzymać poziom panowie :)

0

duzo zalezy od odbiorcow. jezeli odbiorca jest np wembaster, to tworzenie stron w oparciu o najnowsze technologie jest wskazane. co innego, gdy odbiorca jest kobieta, ktora szuka przepisu na rosol :) raczej nie jest swiadoma o tym, ze do przegladania strony potrzebuje przegladarki parsujacej XSLT+XML+CSS :)
wlasnie wymyslilem ciekawe rozwiazanie. moglby istniec serwis, ktory wlasnie parsowalby takie strony. uzytkownik podawalby adres strony z rozszerzeniem xml, a za to dostawalby wynik w XHTML/HTML. jezeli uwazacie, ze to cieakwy pomysl to piszcie. moze zajme sie stworzeniem takich skryptow.
aa, plusem jeszcze jest to, ze jezeli uzytkownik nie ma dostepu do PHP, moze wykorzystac wtedy taki skrypt dzialajacy na innym serwerze :)

0
Marooned napisał(a)

Powstaje pytanie - co ze starszymi przeglądarkami, które nie potrafią wyświetlić takich stron poprawnie. Takie pytanie pojawia się zawsze przy nowych technologiach i głównym argumentem jest fakt, że aby się rozwijać, iść z duchem czasu nie możemy utrzymywać za wszelką cenę kompatybilności w dół.

Nie chodzi tutaj tylko o starsze przeglądarki (bo choćby IE obsługuje XSLT zdaje się nawet od wersji 4 - choć nie jestem pewien), ale głównie o Operę (która nie obsługuje) oraz o wszelkie marginalne agenty - roboty sieciowe indeksujące stronę, przeglądarki tekstowe, przeglądarki głosowe.

Nie wiem jak sobie poradzi robot, powiedzmy Googlebot, z dokumentem XML - mam wrażenie, że nie dokona transformacji XSLT i nie pójdzie za linkami dalej.

Tak samo też prymitywna przeglądarka w telefonie komórkowym nie będzie potrafiła tego.

Stąd lepszym rozwiązaniem jest dokonywanie transformacji na serwerze dla potrzeb określonego agenta - jeśli jest to telefon - to dać mu XHTML 1.0 Basic czy WML, jeśli przeglądarka tekstowa - dać jej HTML, jeśli Opera nieszczęsna - dać jej także HTML.

Wykrywać można poprzez nagłówek HTTP_ACCEPT (podobnie jak stosuje się wysyłanie odpowiedniego Content-type dla IE dla dokumentów XHTML, bo application/xml+xhtml nie rozumie i nie będzie rozumiał także w IE 7) i jeśli nie będzie agent docelowy obsługiwał XML+XSL to dać mu wersję przetransformowaną - ale po co męczyć ię z wykrywaniem, skoro wszystkim przeglądarkom można to po prostu dać? (ale nie jestem pewien czy da się z HTTP_ACCEPT wykryć czy przeglądarka rozumie XSL)

Ja wiem, można powiedzieć, że "mnie niewidomi, użytkownicy Lynksa, Opery i komórek nie interesują". Oczywiście, jeśli tworzymy prywatną stronę to tak możemy postąpić. W firmie byłoby inaczej - dlaczego mamy się pozbywać potencjalnych klientów?

[jeszcze]
Przeglądarki nie wyświetlają progresywnie XSLTowych dokumentów (to akurat wina kulawego w tej dziedzinie Gecko).

0
Ktos napisał(a)

Nie wiem jak sobie poradzi robot, powiedzmy Googlebot, z dokumentem XML - mam wrażenie, że nie dokona transformacji XSLT i nie pójdzie za linkami dalej.
No tu fakt - czytaj: http://4programmers.net/Forum/266571#266571

Piszesz o parsowaniu po stronie serwera - a co jeśli nie mam do dyspozycji języka server-side?

0

Ktos: Ale zauważ, że w wysyłaniu XML cała siła :). Jeśli przeglądarka nie obsłuży tego, to trzeba jakoś sobie z tym radzić, ale w przeciwnym razie same zalety - oszczędność transferu, możliwość łatwiejszego rozumienia przez specjalnie zaprojektowane programy itp. Myślę, że jak tylko UA obsługuje XSLT, to trzeba mu tak wysyłać, bo inaczej to nie do końca ma sens.

0
Marooned napisał(a)

Piszesz o parsowaniu po stronie serwera - a co jeśli nie mam do dyspozycji języka server-side?

A tu mamy problem. Wczoraj jak szukałem czegoś apropos tej dyskusji na pl.comp.xml to jedyne co znalazłem to pomysł aby stworzyć serwis dokonujący takich transformacji. Bo jeśli nie masz możliwości przekształcenia inaczej niż u klienta i jednocześnie nie chcesz zrezygnować z XML to nie wiem co możesz zrobić ;)

Adam Pilorz napisał(a)

Myślę, że jak tylko UA obsługuje XSLT, to trzeba mu tak wysyłać, bo inaczej to nie do końca ma sens.

Tak. W sumie masz punkt. Ale nie możesz wszystkim wysyłać XML+XSLT i o to chodzi - musisz być przygotowany, że ktoś XSL może nie zrozumieć.

Znalazłem też tak notabene przeciwskazania co do transformacji na serwerze - jest to podobno za wolne do zastosować biznesowych, choć znacznie lepiej jest już w PHP5.

0

Oczywiście w momencie, kiedy użytkownik ma nowoczesną przeglądarkę (tutaj Opery nie zaliczam do przeglądarek nowoczesnych, nawet IE sobie radzi), to możesz mu wysyłać XML+XSLT. Przeglądarka sobie w mig poradzi z tym. Natomiast jeśli używa dennej przeglądarki, to najwyżej poczeka, aż serwer to przekształci. Jedynym problemem jest sytuacja, gdy nie mamy możliwości zrealizować tego należycie, tzn. nie możemy przeparsować po stronie serwera. Myślę, że nie ma co rezygnować z nowoczesnych technologii tylko dlatego, że Opera sobie z nią nie radzi. Pozostają oczywiście jeszcze inne marginalne przeglądarki. Co nie zmienia faktu, że gdy przeglądarka akceptuje, to wysyłać XML ile wlezie :)

[dodane]

Ktos napisał(a)

[jeszcze]
Przeglądarki nie wyświetlają progresywnie XSLTowych dokumentów (to akurat wina kulawego w tej dziedzinie Gecko).
Pytanie tylko po co. W większości sytuacji dokumenty XML są tak lekkie, że nie ma takiej potrzeby.

0

Wersja "ideowa"...
Rozwiazanie jest dobre, dla malych stron ktore siedza na serwerach gdzie nie ma mozliwosci zastosowanie systemu bazodanowego z wlasnym DAO w oparciu o jakis popularny jezyk skryptowy. Idealne do zestawien tabelarycznych. I chyba tylko i wylacznie ;). Mozna sobie jakis button nawet na stronie dac "XML powered :P".

... a praktyka
Duze projekty maja dobre serwery, dobre serwery maja lepsze technologie. Male strony nie sa na tyle skomplikowane, zeby trzeba bylo sie na XML porywac.

troche prywaty ;)
Marooned, przyklad Twojej strony i argumentacja:

Wcześniej długo była to wersja czysto HTML [na serwerze nie ma żadnych języków server-side] i edycja, dodawnie czy zmiana fotki to grzebanie się w kodzie, dość niewygodne - dlatego aktualizacje były rzadkie..
jest taka troche ten tego ;).

  1. Struktura tabel jest rownie banalna co sam XML przy recznej edycji.
  2. Jesli zastosuje sie wylacznie divy i css, plus przemyslany kregoslup calosci, to juz w ogole baza na xml imo staje sie promem kosmicznym na trzech kolkach.

Gdybys zaczal pisac o planach stworzenia desktopowego klienta do edycji tego XML, a tym samym zmieniania zawartosci strony, to bym Ci tylko przyklasnal - wtedy wszystko (baza w xml, xslt etc.) ma sens. A tak... to mozemy sobie wylacznie dyskutowac ;).

I po raz kolejny napisze - <font color="blue">Opera 9 ma obsluge XML + XSLT</span>!

0

A więc tak. Aktualnie tworzę forum, które dane przesyła do klienta w XML. Baza danych jest, ale bazy klientowi nie prześlę - podaję mu potrzebne informacje w XML, on to sobie parsuje i śmiga - dużo mniejszy transfer to generuje niż zwykłe forum. Ale niestety brak parsowania na niektórych klientach wymaga postawienia czegoś na serwerze. Niestety, kochany DMKHost nie obsługuje xslt :/

Co do Opery 9 - Opera 9 jest wersją beta, nikt jej jeszcze praktycznie nie używa. Powtarzam to również po raz któryś z kolei.

0
roSzi napisał(a)

troche prywaty ;)
Marooned, przyklad Twojej strony i argumentacja:

Wcześniej długo była to wersja czysto HTML [na serwerze nie ma żadnych języków server-side] i edycja, dodawnie czy zmiana fotki to grzebanie się w kodzie, dość niewygodne - dlatego aktualizacje były rzadkie..
jest taka troche ten tego ;).

  1. Struktura tabel jest rownie banalna co sam XML przy recznej edycji.
  2. Jesli zastosuje sie wylacznie divy i css, plus przemyslany kregoslup calosci, to juz w ogole baza na xml imo staje sie promem kosmicznym na trzech kolkach.

Porównaj:
wersja HTML

1098230 Adam Boduch   #2   #3   </li>4726757 Dryobates   #2   </li>no_gg.gif pq
</li></ol> ```

wersja XML

	<osoba nick="Adam Boduch" gg="1098230" id="1">
		<foto>Adam_Boduch.jpg</foto>
		<foto>Adam_Boduch2.jpg</foto>
		<foto>Adam_Boduch3.jpg</foto>
	</osoba>
	<osoba nick="Dryobates" gg="4726757" id="31">
		<foto>Dryobates.jpg</foto>
		<foto>Dryobates2.jpg</foto>
	</osoba>
	<osoba nick="pq" id="93">
		<foto>pq.jpg</foto>
	</osoba>

Zważ, że w HTML nie ma jeszcze linków do kont na 4p, co już wprowadziłem w XML - to jeszcze bardziej zaszumiłoby kod.

W HTML nr gg trzeba pisać trzykrotnie. Jasne, że struktura jest prosta - ale mnogość kodu, redundancja danych sprawia, że zarządzanie takim kodem jest bardziej uciążliwe. Co chyba widać? :|

0

To teraz moje 5gr.

Co do dużych projektów to też nie zgodzę się w całości. Dzięki wykorzystaniu xslt można zbudować komponenty webowe do wielokrotnego wykorzystania, właśnie w dużych projektach (w małych nie ma po co się tak bawić). Wiele elementów jak np. browsery pojawiają się wszędzie i realizacja przy pomocy xslt (z drugą częścią po stronie serwera) to jest bardzo wygodna rzecz.

Oczywiście xslt można też po stronie serwera zrobić, co w dużych projektach, stojących na silnych maszynach, wcale nie jest odczuwalne po stronie klienta.

Więc użycie xslt jest na pewno zaletą, którą można wykorzystać w wielu przypadkach. Zostaje tylko kwestia gdzie to przetwarzać...

I tutaj jest chyba największy problem. Oczywistym jest, że przetwarzając po stronie klienta zwiększamy wrażenie interakcyjności. Po pojedynczym, ew. trochę dłuższym, załadowaniu plików xslt następne odsłony są szybie proporcjonalnie do szybkości komputera, a nie łącza. (jeżeli wpleść w to ajax...)

Kolejna rzecz, bardziej już przemawiająca do samych twórców, to ten nieszczęsny rozdział treści, struktury i prezentacji. Pomijając całą tą ideologiczną bajkę, to pozostawiając prezentację w rękach CSS, strukturę w XSLT oraz treść w XML, mamy bardzo wygodny rozdział pracy pomiędzy członków zespołu lub chociaż zarządzanie czymś większym. Wystarczy, że jedna osoba np. odpowiedzialna za generowanie treści (np. programista PHP) będzie miał wspólny protokół z projektantem strony, to ma już w głębokim poważaniu, czy na stronie A ma wyświetlić dane w postaci tabelki posortowanej czy nie, z takimi czy innymi polami itp. itd. (W skrajnym przypadku daltonistów jak ja można rozdzielić w ogóle: XML, XSLT - nawet dla daltonisty, CSS - osoba, która zna się na kolorkach ;) ).

Co do przeglądarek, to też nie jest wcale tak źle. Przeglądarki dostaną treść strony. Czyli dokładnie to o co im chodzi. Może bez pewnej, czasem ważnej otoczki, ale jednak. Z podróżowaniem po stronce taki google też nie będzie miał problemu, o ile programista przygotuje mu instrukcję obsługi (google sitemaps). Tracimy oczywiście znaczenie. Rozpoznawanie tytułów, nagłówków itp.

Z obsługą XSLT też nie jest tak źle. Śledziłem dyskusje na forum opery. To, że w operze wprowadzają XSLT (z czego się ogromnie cieszę), to w ogromnej mierze zasługa użytkowniów. Ich presja to spowodowała (i prawidłowa postawa Opera Software).

Więc tworzyć należy z wykorzystaniem XSLT. Jeżeli się robi stronę "dla siebie", to można sobie nie zawracać głowy użytkownikami przeglądarek nie obsługujących tego standardu. Jeżeli się tworzy stronę na poważnie, to już nie ma przeproś. Liczy się pieniądz, a pieniądz to w przypadku stron ludzie, którzy ją odwiedzają. Dla wygodny robisz w XSLT, ale rozpoznajesz, czy to jest przeglądarka z obsługą XSLT, czy nie. Zależnie od tego albo wysyłasz mu XML i skrypty XSLT, a użytkownik nie może nacieszyć się cudowną technologią jaką zastosowałeś ( :D ), albo przetwarzasz to po stronie serwera i użytkownik cieszy się cieszy się tym, co ta technologia dla niego zrobiła ( o której pewnie nigdy się nie dowie... oby ).

0

Dryo - nie pozostaje nic, tylko się zgodzić :) Problem w tym, że nie każdy serwer (nawet te drogie i komercyjne) obsługuje transformację XSLT. No a jeśli chodzi o to, czy tworzę dla siebie, czy dla kasy, to jest jeszcze jedna opcja - dla ludzi. Są strony, które tworzy siędla własnego użytku, czy własnej satysfakcji, czasem przy okazji ktoś z nich korzysta. Są strony, które robi się dla pieniędzy - na zlecenie firmy itp. Są jednak strony, które robi się dla użytkowników, którzy z tej strony będą korzystać. Gdy ci użytkownicy najczęściej nie będą pamiętać, kto jest autorem strony, jaką zastosował technologię, tylko będą z niej korzystać i cieszyć się, że działa. I tutaj pozostaje problem, bo chcąc zastosować XML+XSLT+CSS nie mogę zignorować użytkowników, dla których powstaje strona.
//Dryo: No spoko, ale ja z DMKHost.net mam podpisaną umowę na rok :P. Myślałem o mailu, że jak tego nie zainstalują, to zrezygnuję z ich usług, no ale to tak trochę... dziwnie :) Bo w sumie to trochę przesada, żeby 'grozić rezygnacją', jakby jedno konto za 120 zł rocznie było dla nich tak ogromną różnicą...

0

Adam: wówczas szukasz serwerów, które obsługują takie technologie albo wysyłasz zapytania do wybranego dostawcy, czy posiada takie coś. To jest pewne narzędzie nacisku. Jemu także zależy na klientach i będzie starał się dostarczyć mu to, czego potrzebuje. Kapitalizm. Popyt, podaż itp. :)

//OT: DMK nie zależy na klientach! Mają ich głęboko gdzieś - M

1 użytkowników online, w tym zalogowanych: 0, gości: 1