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