Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL



Podobne dokumenty
Aplikacje internetowe laboratorium XML, DTD, XSL

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

Język XSLT. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

XML materiały dydaktyczne - Kurs Podstawowy XSL - wprowadzenie. XSL warstwa przekształcania (XSLT) oraz prezentacji informacji (XSL FO).

XML Schema. Bartłomiej Świercz. Łódź, 19 listopada 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz XML Schema

XML extensible Markup Language 3

Aplikacje WWW - laboratorium

Wprowadzenie do arkuszy stylistycznych XSL i transformacji XSLT

Aplikacje WWW - laboratorium

Dokumenty SEDU składają się z dwóch części: Opisu sprawy Formularza elektronicznego

Aplikacje WWW - laboratorium

METODY REPREZENTACJI INFORMACJI

Aplikacje WWW - laboratorium

Kadry Optivum, Płace Optivum

Aplikacje WWW - laboratorium

Laboratorium 7 Blog: dodawanie i edycja wpisów

Ćwiczenia laboratoryjne nr 8 Podstawy języka XML.

2. Podstawy narzędzia Application Builder, budowa strony, kreatory aplikacji

Rola języka XML narzędziem

Prezentacja i transformacja

Egzamin z przedmiotu Projektowanie języków XML imię i nazwisko. Zadanie Suma Punkty Max Punkty

2. Podstawy narzędzia Application Builder, budowa strony, kreatory aplikacji

Wprowadzenie do XML schema

Wprowadzenie do technologii XML

Zadanie 9. Projektowanie stron dokumentu

WYKŁAD 2 DTD DOCUMENT TYPE DEFINITION CZĘŚĆ 1

Zadanie 1. Stosowanie stylów

Dokument poprawnie sformułowany jest zgodny z ogólnymi zasadami składniowymi:

XML extensible Markup Language. część 4

Przedszkolaki Przygotowanie organizacyjne

Sekretariat Optivum. Jak przygotować listę uczniów zawierającą tylko wybrane dane, np. adresy ucznia i jego opiekunów? Projektowanie listy

Służy do wybierania/wyszukiwania fragmentów dokumentu XML. Przypomina trochę ścieżki w systemie operacyjnym. Niech będzie dany dokument XML:

Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Podręcznik Użytkownika LSI WRPO

UONET+ moduł Dziennik

LAB 7. XML EXtensible Markup Language - Rozszerzalny Język Znaczników XSD XML Schema Definition Definicja Schematu XML

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML

Extensible Markup Language III

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Aplikacje WWW - laboratorium

DTD - encje ogólne i parametryczne, przestrzenie nazw

Zaawansowane aplikacje WWW - laboratorium

Aplikacje internetowe - laboratorium

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Sigma moduł Arkusz. Wprowadzanie do arkusza planów nauczania oddziałów

METAJĘZYKI. Politechnika Koszalińska Wydział Elektroniki i Informatyki Katedra Inżynierii Komputerowej

Danuta ROZPŁOCH-NOWAKOWSKA Strona Moduł 4. Przykład 1. Przykład 2. HTML 4.01 Transitional).

Instalacja i obsługa aplikacji MAC Diagnoza EW

Wprowadzenie do technologii XML

Języki formatowania dokumentów strukturalnych. XSL przekształcenia XML-a. XSL a XSLT. XSL części składowe. Zasada działania przekształcenia XSLT

Instrukcja importu deklaracji pacjentów. do dreryka

Aplikacje WWW - laboratorium

Przetwarzanie dokumentów XML za pomocą XSLT ( r.)

Plan prezentacji. Krótko o XML Arkusze stylów XSLT XSL XSL Path Przegląd konstrukcji języka i przykłady Narzędzia Podsumowanie Literatura

Kurs WWW Język XML, część I

Ministerstwo Finansów

Zadanie 10. Stosowanie dokumentu głównego do organizowania dużych projektów

Sekretariat Optivum. Import danych z Arkusza Optivum do Sekretariatu Optivum

Dokumentacja Użytkownika Systemu

Zaawansowane aplikacje internetowe - laboratorium

Ocenianie opisowe Optivum. Jak przygotować i wydrukować świadectwa lub arkusze ocen?

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Część I: Przypisanie makr do obiektu (przycisku).

UONET+ moduł Dziennik

Rozdział 17. Zarządzanie współbieżnością zadania

Pokaz slajdów na stronie internetowej

Dodawanie, edycja i usuwanie zbioru kolekcji

Pomoc dla systemu WordPress

29. Poprawność składniowa i strukturalna dokumentu XML

Jako lokalizację, w której będzie kontynuowana praca w przyszłym roku szkolnym, warto wybrać tę, w której zgromadzonych jest więcej danych.

Podstawy JavaScript ćwiczenia

Aplikacje internetowe i rozproszone - laboratorium

Finanse VULCAN. Jak wprowadzić fakturę sprzedaży?

Zaawansowane aplikacje internetowe

KONSOLIDACJA. Cel ćwiczenia: Funkcjonalności:

UONET+ moduł Dziennik

PWI Instrukcja użytkownika

Przekształcenie danych przestrzennych w interaktywne mapy dostępne na stronach www (WARSZTATY, poziom zaawansowany)

learningpanel - materiały pomocnicze - JAK ZROBIĆ... Jak zrobić...

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

Rodzaje przetwarzania XSLT (1)

Kurs WWW Język XML, część II

AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE. QuIDE Quantum IDE PODRĘCZNIK UŻYTKOWNIKA

Instrukcja użytkownika Porównywarki cen Liquid

Tworzenie pliku źródłowego w aplikacji POLTAX2B.

Uruchomienie aplikacji elektronicznych na platformie epuap

Elektroniczny Urząd Podawczy

UONET+ - moduł Sekretariat. Jak wykorzystać wydruki list w formacie XLS do analizy danych uczniów?

Laboratorium - Task Manager (zarządzanie procesami) w Windows Vista

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

ELF. Instrukcja użytkownika. (System wspomagający wypełnianie wniosków elektronicznych)

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Aplikacje internetowe - laboratorium

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

METODY REPREZENTACJI INFORMACJI

Instrukcja obsługi Multiconverter 2.0

Transkrypt:

Aplikacje internetowe laboratorium XML, DTD, XML Schema, XSL Celem ćwiczenia jest stworzenie dokumentu XML, wyposażenie dokumentu w specyfikację struktury (przy użyciu DTD i XML Schema), oraz transformacja dokumentu XML do postaci HTML przy użyciu arkuszy stylów XSL. Do wykonania ćwiczenia potrzebny jest dowolny edytor plików tekstowych oraz przeglądarka internetowa. 1. Stwórz plik pracownicy.xml zawierający informacje o wszystkich zespołach i pracownikach zespołów. Wykorzystaj poniższy kod: <?xml version="1.0" encoding="iso-8859-2"?> <INSTYTUT NAZWA="INSTYTUT INFORMATYKI" ULICA="PIOTROWO 2" KOD="60-965" MIASTO="POZNAN"> <ZESPOLY> <ZESPOL> <NAZWA>ADMINISTRACJA</NAZWA> <PRACOWNICY> <PRACOWNIK ID_PRAC="p180"> <NAZWISKO>MAREK</NAZWISKO><ETAT>SEKRETARKA</ETAT><PLACA>410,2</PLACA> </PRACOWNICY> <ZESPOL> <NAZWA>ALGORYTMY</NAZWA> <PRACOWNICY> <PRACOWNIK ID_PRAC="p110"> <NAZWISKO>BLAZEWICZ</NAZWISKO><ETAT>PROFESOR</ETAT><PLACA>1350</PLACA> </PRACOWNICY> <ZESPOL> <NAZWA>SYSTEMY EKSPERCKIE</NAZWA> <PRACOWNICY> <PRACOWNIK ID_PRAC="p230"> <NAZWISKO>HAPKE</NAZWISKO><ETAT>ASYSTENT</ETAT><PLACA>480</PLACA> <PRACOWNIK ID_PRAC="p200"> <NAZWISKO>ZAKRZEWICZ</NAZWISKO><ETAT>STAZYSTA</ETAT><PLACA>208</PLACA> </PRACOWNICY> <ZESPOL> <NAZWA>SYSTEMY ROZPROSZONE</NAZWA> <PRACOWNICY> <PRACOWNIK ID_PRAC="p220"> <NAZWISKO>KONOPKA</NAZWISKO><ETAT>ASYSTENT</ETAT><PLACA>480</PLACA> <PRACOWNIK ID_PRAC="p190"> <NAZWISKO>MATYSIAK</NAZWISKO><ETAT>ASYSTENT</PLACA><PLACA>371</ETAT> <PRACOWNIK ID_PRAC="p170"> <NAZWISKO>JEZIERSKI</NAZWISKO><ETAT>ASYSTENT</ETAT><PLACA>439,7</PLACA> <PRACOWNIK ID_PRAC="p160"> <NAZWISKO>KOSZLAJDA</NAZWISKO><ETAT>ADIUNKT</ETAT><PLACA>590</PLACA> </PRACOWNICY> <ZESPOL> <NAZWA>BADANIA OPERACYJNE</NAZWAZESPOLU> </ZESPOLY> </INSTYTUT> 2. Sprawdź, czy plik jest poprawnie wyświetlany przez przeglądarkę. Znajdź błędy w dokumencie i je napraw.

3. Stwórz opis DTD (ang. Document Type Definition) struktury danych przechowywanych w pliku pracownicy.xml. W nagłówku pliku pracownicy.xml dodaj poniższy kod: <?xml version="1.0" encoding="iso-8859-2"?> <!DOCTYPE INSTYTUT [ <!ELEMENT INSTYTUT (ZESPOLY)> <!ATTLIST INSTYTUT NAZWA CDATA #REQUIRED ULICA CDATA #IMPLIED KOD CDATA #IMPLIED MIASTO CDATA #FIXED "POZNAN"> <!ELEMENT ZESPOLY (ZESPOL)+> <!ELEMENT ZESPOL (NAZWA,PRACOWNICY?)> <!ELEMENT NAZWA (#PCDATA)> <!ELEMENT PRACOWNICY (PRACOWNIK)+> <!ELEMENT PRACOWNIK (NAZWISKO,ETAT,PLACA)> <!ATTLIST PRACOWNIK ID_PRAC ID #REQUIRED> <!ELEMENT NAZWISKO (#PCDATA)> <!ELEMENT ETAT (#PCDATA)> <!ELEMENT PLACA (#PCDATA)> <!ENTITY szef "DYREKTOR"> ]> <INSTYTUT NAZWA="INSTYTUT INFORMATYKI"...> 4. Dodaj do zespołu ADMINISTRACJA nowego pracownika zdefiniowanego jak poniżej i zobacz, jak dokument jest wyświetlany w przeglądarce. Zwróć uwagę na to, w jaki sposób przeglądarka interpretuje encję XML. <PRACOWNIK ID_PRAC="p100"> <NAZWISKO>WEGLARZ</NAZWISKO><ETAT>&szef;</ETAT><PLACA>1730</PLACA> 5. Wykorzystaj walidator http://validator.w3.org do sprawdzenia poprawności swojego pliku pracownicy.xml 6. Pracownikowi ZAKRZEWICZ zmień wartość atrybutu ID_PRAC na "p220" i ponownie zwaliduj dokument. Zapoznaj się z komunikatem o błędzie. Przywróć poprawną wersję dokumentu. 7. Pracownikowi JEZIERSKI usuń znacznik <PLACA>439,7</PLACA> i ponownie zwaliduj dokument. Zapoznaj się z komunikatem o błędzie. Przywróć poprawną wersję dokumentu.

8. Stwórz dokument zespoly.xml posługując się poniższym kodem. Sprawdź, czy dokument jest poprawnie wyświetlany przez przeglądarkę. <?xml version="1.0" encoding="iso-8859-2"?> <ZESPOLY> <ZESPOL ID="10"> <NAZWA>ADMINISTRACJA</NAZWA><ADRES>PIOTROWO 3A</ADRES> <ZESPOL ID="20"> <NAZWA>SYSTEMY ROZPROSZONE</NAZWA><ADRES>PIOTROWO 3A</ADRES> <ZESPOL ID="30"> <NAZWA>SYSTEMY EKSPERCKIE</NAZWA><ADRES>STRZELECKA 14</ADRES> <ZESPOL ID="40"> <NAZWA>ALGORYTMY</NAZWA><ADRES>WLODKOWICA 16</ADRES> <ZESPOL ID="50"> <NAZWA>BADANIA OPERACYJNE</NAZWA><ADRES>MIELZYNSKIEGO 30</ADRES> </ZESPOLY> 9. Uruchom program Oxygen XML Editor. Stwórz nowy document XML Schema. W tym celu przejdź do menu File -> New, z dostępnej listy wybierz XML Schema i kliknij Create. Pojawi się szkielet definicji schematu. Przejdź z trybu edycji graficznej (Design) do trybu edycji tekstowej (Text na dole ekranu) i zamiast istniejącej zawartości wstaw poniższy kod. Zapisz plik jako zespoly.xsd. <?xml version="1.0" encoding="iso-8859-2"?> <xs:schema targetnamespace="www.cs.put.poznan.pl" elementformdefault="qualified" attributeformdefault="unqualified" xmlns="www.cs.put.poznan.pl" xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="zespoly"> <xs:annotation> <xs:documentation> Zbior zespolow skladajacych sie na Instytut Informatyki </xs:documentation> </xs:annotation> <xs:complextype> <xs:sequence> <xs:element name="zespol" maxoccurs="unbounded"> <xs:complextype> <xs:sequence> <xs:element name="nazwa" type="xs:string"/> <xs:element name="adres" type="xs:string"/> </xs:sequence> <xs:attribute name="id" type="xs:integer" use="required"/> </xs:complextype> </xs:element> </xs:sequence> </xs:complextype> </xs:element> </xs:schema>

10. Otwórz plik zespoly.xml w programie Oxygen XML Editor i dodaj deklarację wiążącą ten dokument ze stworzonym właśnie schematem XML. Znacznik początkowy powinien mieć postać: <ZESPOLY xmlns="www.cs.put.poznan.pl" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="www.cs.put.poznan.pl zespoly.xsd"> 11. Zwaliduj utworzony dokument. Do tego celu możesz posłużyć się walidatorem na stronie http://tools.decisionsoft.com/schemavalidate/ lub wykorzystać walidator wbudowany w narzędzie Oxygen XML Editor (Ctrl + Shift + v). 12. Do znacznika <ZESPOL> reprezentującego zespół BADANIA OPERACYJNE dodaj atrybut informujący, że dany zespół nie zatrudnia pracowników. Jako wartość atrybutu wpisz literały false lub 0. <ZESPOL ID="50" CZY_PRACOWNICY="false"> <NAZWA>BADANIA OPERACYJNE</NAZWA> <ADRES>MIELZYNSKIEGO 30</ADRES> 13. Do schematu dodaj informację o atrybucie CZY_PRACOWNICY. W tym celu przejdź do graficznej edycji schematu, kliknij prawym przyciskiem myszy (PPM) na elemencie ZESPOL, wybierz Append child -> Attribute i zmień nazwę utworzonego atrybutu na CZY_PRACOWNICY. Następnie w sekcji Attributes edytora ustaw dla tego atrybutu typ logiczny (Type: xs:boolean). Obejrzyj w trybie edycji tekstu wygenerowaną definicję elementu. 14. Zwaliduj dokument. Następnie, zmień wartość atrybutu na literał brak i ponów walidację dokumentu. Przywróć poprawną wersję dokumentu. 15. Do dokumentu zespoly.xml dodaj, po liście zespołów, datę wygenerowania raportu. Przed znacznikiem zamykającym </ZESPOLY> wprowadź poniższy kod:... <DATA_RAPORTU>2010-01-31</DATA_RAPORTU> </ZESPOLY> 16. Do schematu dodaj definicję atrybutu <DATA_RAPORTU>, po definicji elementu <ZESPOL>. W tym celu, w edytorze graficznym kliknij PPM na elemencie <ZESPOL>, wybierz Insert after -> Element i nazwij element DATA_RAPORTU. Następnie ustaw typ elementu na xs:date i obejrzyj w trybie edycji tekstu wygenerowaną definicję elementu. 17. Zwaliduj dokument. Celowo wprowadź błąd do podanej daty, np. zastąp ją datą 31 lutego 2010. Czy walidator znajdzie błąd? Przywróć poprawną formę dokumentu.

18. Do każdego zespołu dodaj znacznik reprezentujący adres e-mail. Przykładowo, zespół SYSTEMY ROZPROSZONE powinien być reprezentowany w pliku zespoly.xml w następujący sposób: <ZESPOL ID="20"> <NAZWA>SYSTEMY ROZPROSZONE</NAZWA> <ADRES>PIOTROWO 3A</ADRES> <EMAIL>systemy.rozproszone@cs.put.poznan.pl</EMAIL> 19. Dodaj do schematu definicję nowego znacznika i zwaliduj dokument. W tym celu kliknij PPM na elemencie ADRES, wybierz Insert after -> Element, nazwij go EMAIL. Jako typ elementu wybierz [ST - restriction], a jako typ bazowy (Base Type) xs:string. Następnie w sekcji Facets edytora, w polu Patterns spróbuj samemu wpisać wyrażenie regularne sprawdzające poprawność adresu email. Obejrzyj w trybie edycji tekstu wygenerowaną definicję elementu. 20. Przykładowe wyrażenie regularne sprawdzające poprawność adresu email ma postać [a-za-z\.]+@([a-za-z0-9]+\.)+[a-za-z]{2,6} 21. Na końcu dokumentu XML, po dacie publikacji raportu, dodaj znacznik przechowujący format raportu. Załóżmy, że raport może przyjmować tylko i wyłącznie formaty: tekstowy, HTML, PDF.... <DATA_RAPORTU>2010-01-31</DATA_RAPORTU> <FORMAT_RAPORTU>pdf</FORMAT_RAPORTU> </ZESPOLY> 22. Dodaj do schematu definicję nowego znacznika i zwaliduj dokument. Kliknij PPM na elemencie <DATA_RAPORTU>, wybierz Insert after -> Element i nazwij go FORMAT_RAPORTU. Jako typ elementu wybierz [ST - restriction], a jako typ bazowy (Base Type) xs:string. Następnie w sekcji Facets edytora, w polu Enumerations dodaj wartości: txt, pdf oraz html. Obejrzyj w trybie edycji tekstu wygenerowaną definicję elementu. 23. Jako wartość atrybutu <FORMAT_RAPORTU> wprowadź doc i zwaliduj dokument. Następnie, przywróć poprawną wersję dokumentu.

24. Twój schemat powinien mieć teraz następującą postać: 25. Stwórz plik transform.xsl zawierający kod XSL służący do transformacji dokumentu pracownicy.xml do postaci HTML. Wypełnij plik następującym kodem: <?xml version="1.0" encoding="windows-1250"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:fo="http://www.w3.org/1999/xsl/format"> <xsl:template match="instytut"> <html> <head> <title>lista pracowników Instytutu Informatyki</title> </head> <body> <xsl:apply-templates/> </body> </html> </xsl:stylesheet>

26. Dopisz do pliku pracownicy.xml powiązanie z arkuszem stylistycznym XSL. Jako drugą linijkę pliku pracownicy.xml umieść następujący kod. Następnie, otwórz plik pracownicy.xml w przeglądarce i zaobserwuj wynik. Przeanalizuj źródło zbudowanej strony HT ML. Co się stało ze znacznikami, dla których w arkuszu stylistycznym nie znaleziono reguł? <?xml-stylesheet type="text/xsl" href="transform.xsl"?> 27. Dodaj do arkusza stylistycznego XSL regułę czytającą nazwę instytutu. Odśwież dokument w przeglądarce i zaobserwuj wynik. <xsl:template match="instytut"> <html> <head> <title>lista pracowników Instytutu Informatyki</title> </head> <body> <h1> <xsl:value-of select="@nazwa"/> </h1> <xsl:apply-templates/> </body> </html> 28. Analogicznie, zmodyfikuj szablon dopasowywany do znacznika <INSTYTUT> w taki sposób, aby poprawnie wyświetlić adres i kod instytutu. <xsl:template match="instytut"> <html> <head> <title>lista pracowników Instytutu Informatyki</title> </head> <body> <h1> <xsl:value-of select="@nazwa"/> </h1> <h2> <xsl:value-of select="@ulica"/> </h2> <h2> <xsl:value-of select="@kod"/> <xsl:value-of select="@miasto"/> </h2> <xsl:apply-templates/> </body> </html> 29. Poniżej kodu pocztowego i nazwy miasta dodaj fragment statycznego tekstu:... </h2> <xsl:text>poniżej znajduje się lista zespołów wraz pracownikami każdego zespołu</xsl:text>

30. Dodaj szablon dopasowujący się do znacznika <ZESPOL> i zaobserwuj działanie szablonu w przeglądarce. <xsl:template match="zespol"> <div class="zespol"> <xsl:number/>.<xsl:value-of select="nazwa"/> <table> <xsl:attribute name="border">1</xsl:attribute> <tr> <th>id</th><th>nazwisko</th><th>etat</th><th>placa</th> </tr> <xsl:apply-templates select="pracownicy"/> </table> </div> 31. Dodaj szablon dopasowujący się do znacznika <PRACOWNIK> i zaobserwuj działanie szablonu w przeglądarce. <xsl:template match="pracownik"> <tr> <td><xsl:value-of select="@id_prac"/></td> <td><xsl:value-of select="nazwisko"/></td> <td><xsl:value-of select="etat"/></td> <td><xsl:value-of select="placa"/></td> </tr> 32. W kolejnym kroku ukryjemy tabelkę dla tych zespołów, które nie zatrudniają żadnych pracowników. Zamiast tabelki pojawi się napis Brak pracowników. Zmodyfikuj szablon dopasowywany do elementu <ZESPOL> w następujący sposób: <xsl:template match="zespol"> <div class="zespol"> <xsl:number/>.<xsl:value-of select="nazwa"/> <xsl:choose> <xsl:when test="pracownicy"> <table> <xsl:attribute name="border">1</xsl:attribute> <tr> <th>id</th><th>nazwisko</th><th>etat</th><th>placa</th> </tr> <xsl:apply-templates select="pracownicy"/> </table> </xsl:when> <xsl:otherwise> <br/><em>brak pracowników</em> </xsl:otherwise> </xsl:choose> </div>

33. Kolejnym krokiem będzie podświetlenie pracowników zatrudnionych na etacie asystenta kolorem błękitnym. Zmodyfikuj szablon dopasowywany do znacznika <PRACOWNIK> w następujący sposób: <xsl:template match="pracownik"> <tr> <xsl:if test="etat='asystent'"> <xsl:attribute name="bgcolor">#addfff</xsl:attribute> </xsl:if> <td><xsl:value-of select="@id_prac"/></td> <td><xsl:value-of select="nazwisko"/></td> <td><xsl:value-of select="etat"/></td> <td><xsl:value-of select="placa"/></td> </tr> 34. W przypadku, gdy ten sam węzeł musi być wielokrotnie przetwarzany przez szablon, można posłużyć się atrybutem MODE w celu kontrolowania kolejności aplikacji szablonów. W tym ćwiczeniu poniżej listy zespołów umieścimy listę asystentów. Zauważ, że wymaga to wielokrotnego odwiedzenia węzłów <PRACOWNIK>, raz w trakcie generowania listy pracowników zespołu, a drugi raz w celu wygenerowania osobnej listy asystentów. Dodaj nowy szablon: <xsl:template match="zespoly" mode="lista_asystentow"> <h3>lista asystentów</h3> <ul> <xsl:for-each select="//pracownik"> <xsl:if test="etat='asystent'"> <li><xsl:value-of select="nazwisko"/></li> </xsl:if> </xsl:for-each> </ul> 35. Sprawdź, czy szablon jest uwzględniany podczas generacji. Dodaj do szablonu dopasowywanego do elementu <INSTYTUT> jawne wywołanie szablonów działających w trybie lista asystentów.... <xsl:apply-templates/> <xsl:apply-templates mode="lista_asystentow"/> </body> </html>

zadanie opcjonalne 36. Ostatnim krokiem będzie wykorzystanie parsera Xalan-Java. Pobierz parser ze strony http://xml.apache.org/xalan-j/downloads.html. Rozpakuj archiwum do katalogu, w którym prowadzisz ćwiczenie. Dodaj ścieżkę do głównego archiwum parsera do zmiennej systemowej CLASSPATH i wygeneruj wynikowy kod HTML bezpośrednio do pliku. Pełna dokumentacja opcji parsera dostępnych z linii poleceń znajduje się tutaj: http://xml.apache.org/xalan-j/commandline.html C:\> set CLASSPATH=xalan-j_2_7_0/xalan.jar;%CLASSPATH% C:\>java org.apache.xalan.xslt.process -IN pracownicy.xml -XSL transform.xsl -OUT pracownicy.html