Środowisko publikacyjne oparte na XML-u Szymon Zioło 1 maja 2004
Przygotowywanie serwisu internetowego Role biznesowe: redakcja treści (autor), styl, redakcja graficzna (grafik), organizacja witryny (redaktor). Brak jasnego podziału konflikty: autor grafik, redaktor grafik, autor - redaktor.
Serwisy internetowe od strony technicznej Wygląd połączony z danymi. Skrypty generujące stronę w Perlu, PHP, ASP zawierające kawałki kodu HTML. Niedoskonały język komunikacji HTML. Strona WWW nie może być źródłem informacji dla innego komputera.
XML rozwiązanie konfliktu autor grafik <osoba>król</oso <wypowiedź>pytam cię Hamlecie: gdzie jes Poloniusz?</wypowie <osoba>hamlet<oso <wypowiedź>na lacji</wypowie arkusz stylów XSL Król Pytam cię Hamlecie: gdzie jest Poloniusz? Hamlet Na kolacji. autor grafik
Cocoon separacja kompetencji Zarządzanie Logika Treść Styl Źródło: Introducing Cocoon, The Apache Cocoon Project, http://cocoon.apache.org/2.1/introduction.html
SAX dokument XML jako ciąg zdarzeń SAX - Simple API for XML: standardowe API do przetwarzania dokumentów XML: uwalnia od żmudnego programowania analizy leksykalnej i składniowej; metoda reprezentacji dokumentu XML jako ciągu zdarzeń. <sztuka> <osoba>król</osoba> <wypowiedź>pytam cię Hamlecie: gdzie jest Poloniusz?</wypowiedź> <osoba>hamlet<osoba> <wypowiedź>na kolacji </wypowiedź> </sztuka> startdocument() startelement("sztuka", []) startelement("osoba", []) characters("król") endelement("osoba") startelement("wypowiedź", []) characters("pytam cię Hamlecie...") endelement("wypowiedź") startelement("osoba", []) characters("hamlet") endelement("osoba") startelement("wypowiedź", [])...
Cocoon model przetwarzania generator transformator transformator transformator serializer
Gotowe komponenty Generatory: z pliku, z katalogu w systemie plików, HTML generator, search generator,... Transformatory: XSLT, SQL, XInclude, i18n (internationalization),... Serializery: HTML, XML, SVG, PDF,...
Idea realizacji separacji kompetencji Bazy danych XML TXT HTML Pliki XML Artykuł XML Nagłówek XML Konfiguracja XML Wynikowy XSL Serwer WWW Przeglądarka Inne źródła
http://mysite.pl/info.wap Jedno źródło różne publikacje Możliwość konfiguracji różnych łańcuchów przetwarzania dla różnych formatów. Dynamiczne generowanie dokumentu w żądanym formacie. http://mysite.pl/info.html http://mysite.pl/info.pdf
Wydajność Możliwość cache'owania zapytań do Cocoona. Wybrane komponenty wspierające cache'owanie: generator z pliku, transformator XSLT, serializery. Algorytmy cache'owania: domyślny: zapamiętywanie wyników łańcucha przetwarzania dokąd jest to możliwe (aż nie napotkamy komponentu nie wspierającego cache'owania), cache'owanie sterowane czasem, np. access plus 2 minutes generator z pliku transformator XSLT transformator SQL transformator XSLT serializer
Proste zastosowanie: książka kucharska Przepisy kulinarne: dokumenty XML, składowane w wybranym katalogu jako pliki. Funkcjonalność aplikacji: lista przepisów, linki do przepisów, treść przepisu w czytelnej formie.
Pokaz na żywo! Konfiguracja wykorzystana w pokazie: Java 2 SDK, Standard Edition 1.3.1_08, Apache Tomcat 3.3.1a, Apache Cocoon 2.0.4. Źródło przepisów: Wirtualna Kuchnia Polska, http://kuchnia.verusinter.net
Przetwarzanie przepisu generator z pliku XSLT przepis2html.xsl serializer HTML
Przetwarzanie listy przepisów generator z katalogu XSLT dir2include.xsl XInclude XSLT include2html.xsl serializer HTML
Transformator XInclude Przed: <?xml version="1.0" encoding="utf-8"?> <directory xmlns:xi="http://www.w3.org/ 2001/XInclude" xmlns:dir="http://apache.org/ cocoon/directory/2.0"> <file name="salatka.xml"> <xi:include href="salatka.xml# xpointer(/przepis/tytul)"/> </file> <file name="pierogi_z_baranina.xml"> <xi:include href= "Pierogi_z_baranina.xml# xpointer(/przepis/tytul)"/> </file> <file name="bliny_na_piwie.xml"> <xi:include href= "Bliny_na_piwie.xml# xpointer(/przepis/tytul)"/> </file> </directory> Po: <?xml version="1.0" encoding="utf-8"?> <directory xmlns:xi="http://www.w3.org/ 2001/XInclude" xmlns:dir="http://apache.org/ cocoon/directory/2.0"> <file name="salatka.xml"> <tytul>sałatka z ogórków</tytul> </file> <file name="pierogi_z_baranina.xml"> <tytul>pierogi z baraniną i szynką w cieście drożdżowym</tytul> </file> <file name="bliny_na_piwie.xml"> <tytul>bliny na piwie</tytul> </file> </directory>
Dziękuję!