XForms - czyli o co chodzi w tym wszystkim
16 maja 2006
Naszło mnie niedawno na przyswojenie sobie podstawowych informacji o XForms. Tyle się o tym teraz mówi, nowoczesne przeglądarki wymieniają wsparcie dla tej technologii w changelogach swoich najnowszych wersji, należałoby więc nadrobić i conieco poczytać. Specyfikacja jest za trudna jak na początek, więc rozpocząłem szukanie. Znalazłem jedynie materiały angielskie:
- Posty z blogów otagowane jako XForms
- XForms Basics - przyjemny artykuł z podstawami.
- What Are XForms - art na xml.com.
- XForms Essentials - ebook streszczający większość tego co wypada widzieć o XForms. Nie za lekki, ale bardzo dobry.
Przyznam szczerze, że ebook i parę artykułów później wreszcie zrozumiałem ideę kryjącą się za XForms i naciski jego zwolenników na producentów oprogramowania.
Okazuje się bowiem, że ten cały Ajax to oczywiście sposób na polepszenie user-experience i procesu wymiany danych z serwerem, ale także - kompatybilny z większością przeglądarek krok w kierunku tego co prezentuje XForms. Innymi słowy - globalny sukces Ajax-a przesądza o przyszłym sukcesie XForms - standardzie, którego Ajax jest nazwijmy, młodszym bratem.
Zwyczajne formularze są oparte na elementach <form> - wszystkie widgety muszą znaleźć się w środku takiego znacznika. XForms jest inne - w <head/> deklarujesz model formularza za pomocą określonych <xf:instance> - struktury XML podlinkowanej w src="" albo stworzonej wewnątrz elementu. Następnie w dokumencie wstawiasz gdzie chcesz „pola formularza” odwołując się do zadeklarowanego modelu - można sobie tylko wyobrazić jakie zaawansowane formularze będzie można budować. Widgety są podłączone do elementów XML-a za pomocą XPath - bardzo wydajnej metody stosowanej między innymi podczas trawersowania drzewa dokumentu w DOM Level 3.
Dostajemy o wiele bardziej kompleksowy zestaw widgetów - i mimo że renderowanie zależne jest od możliwości agenta (inaczej może przedstawiać telefon komórkowy a inaczej przeglądarka), to wreszcie można odstawić JavaScript aby uzyskać slider, tooltip albo wypisać błąd w formularzu. Wreszcie - XForms daje nam możliwości walidacyjne oraz możliwość korzystania z wyrażeń regularnych oraz masek wpisywanych znaków (kod pocztowy, adres email).
XForms udostępniają możliwość chowania tych elementów formularza, które aktualnie nie są potrzebne albo nie są ważne. Teraz należy to robić za pomocą JavaScriptu. Służy do tego <switch> - za jego pomocą także można symulować stronicowanie formularza.
Widgety formularza są nastawione na to co chcemy przekazać do serwera, a nie jak. Jeśli tylko mamy odpowiednie urządzenia, nic nie stoi na przeszkodzie, żeby nagrać głos, podpisać się odręcznie albo zrobić zdjęcie tęczówki i od razu takie dane wysłać. Teraz musiałby być to wcześniej zarejestrowany / stworzony plik. Nie sposób tego zrobić w jakimś terminalu na poczcie albo lotnisku.
Dane wypełnionego formularza są zapisywane jako XML. Jako, że XForms jest cały czas „podłączone” do odpowiedniej struktury XML, wystarczy zmienić zawartość jej drzewa, aby odpowiednie pola zostały automatycznie wypełnione - na przykład zapamiętywanie wpisanych danych albo automatyka w wypełnianiu zeznań podatkowych. Wszystko on the fly.
Działa to także na odwrót. Wszystko co teraz przyprawia nas o wypieki - asynchroniczne zapytania, dynamiczne fragmenty stron - są niejako standardem w XForms. Każda zmiana zapytania będzie uaktualniała to co wyświetla się na stronie - za pomocą <xf:output>. Wpisujesz w pole tekstowe komentarz na blogu, a niżej na żywo możesz mieć podgląd, bez krzytyny skryptowania. Co więcej - w bloku <xf:repeat> pokażą się na żywo wszystkie wyniki wyszukiwania - cały czas odpowiadające ilości elementów w wybranym XML-u, tak!.
Wynikiem formularza XForms jest struktura XML, którą można zapisać od razu do bazy danych albo przetwarzać dalej na kolejnych szczeblach. XML jest łatwy do zarządzania, ponownego wykorzystania. No i łatwo go debugować.
Najlepiej o zaletach XForms mówią dema. Aby udało się otworzyć stronę z tymi nowoczesnymi formularzami, należy zaopatrzyć się w narzędzia:
- Przeglądarka X-Smiles
- formsPlayer - Wtyczka Active-X dla Internet Explorera.
Obydwa narzędzia mają na swoich stronach odpowiednie demonstracje. Polecam zwłaszcza Amazon Search na formsPlayer. Wydaje się to niepozorne, bo znamy (bloggerzy) już potęgę Ajax-a - Live Search. Ale gdy zrozumieć, że nie ma tam ani grama JSa, to moim zdaniem robi się ciekawie. ;) Polecam pooglądać różne dema i przykłady - są bardzo przyjemne i w miarę przystępny sposób wyjaśniają zawiłości tej nowej technologii.
Notka: Nie jestem ekspertem od XML-a i oczywiście mogę się mylić - dopiero co liznąłem tych informacji. Tak czy inaczej zachęcam do skomentowania, wytknięcia błędów i rozwinięcia tematu albo podrzucenia paru ciekawych linków.