Link do opisu zadania do realizacji. - Newton
Transkrypt
Link do opisu zadania do realizacji. - Newton
Laboratorium „Technologie internetowe” TI_zad_lab5 Laboratorium 5 – zadanie 1. Opracować następujące dokumenty: dokument XML, formatujący dokument XSL oraz odpowiedni plik CSS. Dokument XML zawiera informację o produktach w magazynie ( kilka grup produktów – nazwa grupy, w każdej grupie kilka produktów – nazwa produktu, liczba sztuk produktu w magazynie oraz cena jednostkowa). Formatowanie raportu z zawartości magazynu proszę przygotować w formie podobnej do wydruku przedstawionego na rys. 1 (przykład dla grup studentów z laboratorium 4). Dodatkowo przygotować sortowanie po nazwie produktu, cenie jednostkowej lub liczbie sztuk w ramach każdej grupy. Odpowiednie informacje jak przygotować dokument XSL można znaleźć w materiałach do laboratorium 4. Rys. 1 Przykładowe formatowanie dla danych z laboratorium 4. 2. Przykładowe przetwarzanie dokumentów XML z wykorzystaniem arkuszy styli z wykorzystaniem języka python w trybie interaktywnym przedstawiono na listingu na rys. 2. >>> from lxml import etree >>> xmlfile = open('test1.xml') >>> xslfile = open('test1.xsl') >>> xmldom = etree.parse(xmlfile) >>> xsldom = etree.parse(xslfile) >>> transform = etree.XSLT(xsldom) >>> result = transform(xmldom) >>> print result -- dokument XML -- dokument XSL -- parsowanie do drzewa DOM -- parsowanie do drzewa DOM -- transformacja dokumentu XML Rys. 2 Przetwarzanie dokumentu XML z wykorzystaniem XSL w języku python Referencje: przetwarzanie dokumentów XML z wykorzystaniem XSL w języku python http://lxml.de/xpathxslt.html http://lxml.de/extensions.html Wersja 1.0 (13.11.2016) Antoni Dydejczyk @ 2016, Strona 1 z 4 XSL Laboratorium „Technologie internetowe” TI_zad_lab5 3. Opracować skrypt CGI przetwarzający dokumenty XML i XSL. Odpowiednie informacje jak przygotować skrypt zawarto w punkcie 2 niniejszego dokumentu i materiałach do laboratorium 5. Przykładowy wynik działania skryptu na serwerze Pascal przedstawia rys.3. Rys.3 Wynik działania skryptu CGI na serwerze Pascal. 4. Wersja rozszerzona skryptu CGI zawiera możliwość wyboru sortowania w „QUERY_STRING” i przesłania wybranej wartości do pliku XSL. Przykładowy wynik działania skryptu przedstawia rys. 4. Rys. 4 Wynik działania skryptu CGI na serwerze Pascal. Wersja 1.0 (13.11.2016) Antoni Dydejczyk @ 2016, Strona 2 z 4 Laboratorium „Technologie internetowe” TI_zad_lab5 Do realizacji tego punktu należy wykorzystać informacje zawarte w materiałach do laboratorium 5. Dodatkowe informacje do realizacji projektu: a) Przesłanie danych do skryptu XSL w ramach transformacji XSLT w języku python realizujemy w ramach polecenia transform. Poniżej zmodyfikowany fragment poleceń języka python w trybie interaktywnym: >>> result = transform(xmldom, sortby=”’name’”). Referencje: Przetwarzanie dokumentów XML z wykorzystaniem XSL w języku python http://lxml.de/xpathxslt.html http://lxml.de/extensions.html b) Odczyt danych przekazanych do skryptu XSL z zewnątrz realizuje się poprzez element <xsl:param>. Przykładowe wykorzystanie elementu: <xsl:param name=”sortby”>wartość opcjonalna</param>. Wartość opcjonalna jest wykorzystywana w przypadku braku przesłania wartości parametru z zewnątrz. Referencje: 1. Element <xsl:param> http://www.w3schools.com/xml/ref_xsl_el_param.asp c) Wybór sortowania należy zrealizować wykorzystując element <xsl:choose> lub element <xsl:if>. W ramach bloków realizujemy odpowiednie sortowanie. Referencje: 1. Sortowanie węzłów z wykorzystaniem elementu <xsl:choose> https://our.umbraco.org/forum/developers/xslt/6413-Dynamic-Conditional-Sorting http://stackoverflow.com/questions/16695538/xslsort-does-not-work-together-withxslchoose-or-if 5. Realizacja zadania w chmurze Bluemix wymaga przygotowania odpowiedniego środowiska dla skryptu w języku python. Na początek należy zaimportować odpowiednie środowisko uruchomieniowe z zainstalowanym serwisem obsługującym język python, następnie przygotowujemy plik uruchamiający serwer www z poziomu języka python. Nasz projekt zostanie przygotowany z wykorzystaniem środowiska CLI Cloud Foundry. Wymagane pliki w projekcie: a. manifest.yml b. requirements.txt c. server.py - parametry dla Cloud Foundry - wymagane moduły dla języka python - serwis WWW uruchomiony w języku python d. e. f. g. - skrypt parsujący dokumenty XML, XSL lab5.py static/lab5.xml static/clab5.xsl static/lab5.css Wersja 1.0 (13.11.2016) Antoni Dydejczyk @ 2016, Strona 3 z 4 Laboratorium „Technologie internetowe” TI_zad_lab5 Zawartość pliku „manifest.yml”: --applications: - disk_quota: 128M buildpack: https://github.com/cloudfoundry/cf-buildpack-python.git name: unikalny-url-do-projektu memory: 64MB command: python server.py Zawartość pliku „requirements.txt”: lxml Zawartość pliku „server.py”: #!/usr/bin/env python import BaseHTTPServer import CGIHTTPServer import cgitb; cgitb.enable() ## This line enables CGI error reporting import os port = int(os.getenv('VCAP_APP_PORT')) server = BaseHTTPServer.HTTPServer handler = CGIHTTPServer.CGIHTTPRequestHandler server_address = ("", port) handler.cgi_directories = ["/"] httpd = server(server_address, handler) httpd.serve_forever() Referencje: Przetwarzanie skryptów w języku python w technologii Bluemix https://console.ng.bluemix.net/docs/runtimes/python/index.html#python_runtime/ https://github.com/vmovva/bluemix-python-cgi-sample https://www.ibm.com/blogs/cloud-computing/2014/08/getting-started-python-ibmbluemix/ Poniżej linki do realizacji przykładów do zadania dostępne na serwerze Pascal i Bluemix. 1. http://pascal.fis.agh.edu.pl/~antek/cgi-bin/lab05_zad/lab5a_zad.cgi?sortby=year 2. http://cgi-lab5-zad.mybluemix.net/lab5a.py?sortby=name Parametr „sortby” ma dwie wartości: „name” – sortowanie po nazwisku, „year” – sortowanie po roku i nazwisku. Wersja 1.0 (13.11.2016) Antoni Dydejczyk @ 2016, Strona 4 z 4