presentation

Download Report

Transcript presentation

Entwicklung
UnivIS-Anbindung auf Basis von PHP und DOM-XML
Manuel Zieger
Harald Kolbe
Agenda
1 Einleitung
2 Architektur und verwendete Technologien
3 Entwicklung/Quellcode
4 Vergleich mit Alternativlösung
Programmierung von Internetservices
Praktikum SS 03
2
Ziel des Teilprojekts
• Realisierung einer Abfragemöglichkeit der
UnivIS-Datenbank über verschiedene
Clients:
– PC
– Pocket PC
– Mobiltelefon
• Entwicklung der UnivIS-Anbindung auf PHPBasis
Programmierung von Internetservices
Praktikum SS 03
3
Warum ein eigenes Teilprojekt?
• PHP stellt eigene Methoden zur Verfügung,
um XML-Daten einlesen und manipulieren
zu können
• Generelles Interesse an PHP-Entwicklung
und dem Ausbau vorhandener Kenntnisse
• Beschränkung auf eine Technologie
Programmierung von Internetservices
Praktikum SS 03
4
Agenda
1 Einleitung
2 Architektur und verwendete Technologien
3 Entwicklung/Quellcode
4 Vergleich mit Alternativlösung
Programmierung von Internetservices
Praktikum SS 03
5
Systemarchitektur
Webserver
UnivIS
• PHP
• DOMXML-Extension
XML-Schnittstelle
PC
• HTML
Pocket-PC
• cHTML
Programmierung von Internetservices
Praktikum SS 03
Mobiltelefon
• WML
DB
Clients
6
UnivIS
• Universitäres Informationssystem zur
Abfrage von:
– Personen
– Veranstaltungen
– Institutionen
• Unterschiedliche Abfragemöglichkeiten:
– Webbasiert (http://univis.uni-frankfurt.de)
– UnivIS-eigene Abfragesprache
– PRG-Schnittstelle (Parameterübergabe durch
URLs)
Programmierung von Internetservices
Praktikum SS 03
7
XML/DTD
• XML (eXtensible Markup Language)
– textbasierte Meta-Auszeichnungssprache
– ermöglicht hierarchisch strukturierte Ablage und
Darstellung von Informationen
– Standardformat für plattformunabhängigen
Datenaustausch zwischen Anwendungen
• DTD (Document Type Definition)
– Beschreibung der Struktur eines XML-Dokuments
– ermöglicht Validierung des XML-Dokuments
Programmierung von Internetservices
Praktikum SS 03
8
Beispiel: UnivIS XML-Dokument
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE UnivIS SYSTEM "http://univis.uni-frankfurt.de/univis.dtd">
<UnivIS version="1.3">
<Person key="Person.fb2.wi2.wikoen.knigwo">
<firstname>Wolfgang</firstname>
<lastname>K&#xF6;nig</lastname>
<locations>
<location>
<email>[email protected]</email>
<fax>069/798-28585</fax>
<ort>60054 Frankfurt am Main</ort>
<office>206 C</office>
<street>Mertonstr. 17</street>
<tel>069/798-28594</tel>
<url>http://www.wi-frankfurt.de/</url>
</location>
</locations>
</Person>
</UnivIS>
Programmierung von Internetservices
Praktikum SS 03
9
PHP/DOMXML
• PHP (Hypertext Preprocessor)
– objektorientierte Skriptsprache wie ASP/JSP
– plattformunabhängig
– unterstützt die gängigsten Webserver (z.B.
Apache und IIS)
– wird hauptsächlich für die Erzeugung
dynamischer Webseiten verwendet
• DOMXML
– Erweiterung für PHP
– ermöglicht Zugriff auf sowie Manipulation und
Ausgabe von DOM-Objekten über PHP
Programmierung von Internetservices
Praktikum SS 03
10
DOM
• DOM (Document Object Model)
– ermöglicht Zugriff auf die Elemente einer Markup
Language, z.B. HTML oder XML
– keine eigene Sprache
– Definition von Objekten, Eigenschaften und
Methoden, die eine DOM-fähige Skriptsprache
umsetzen muss
– jede Skriptsprache (z.B. PHP, ASP und JSP)
besitzt eine eigene DOM-Implementierung
• Beispiel für PHP DOM-Methode
$dom->get_elements_by_tagname(“email“)
Programmierung von Internetservices
Praktikum SS 03
11
XML-Dokument als DOM-Struktur
$dom->get_elements_by_tagname(„firstname“)
$dom
$dom->document_element()
UnivIS
person
firstname
lastname
locations
$locations->
child_nodes()
$firstname->get_content()
„Wolfgang“
email
Programmierung von Internetservices
Praktikum SS 03
fax
location
ort
…
url
12
WML
• WML (Wireless Markup Language)
– XML-basierter Standard zur Darstellung von
Informationen auf Mobiltelefonen und PDAs
– vergleichbar mit HTML, aber reduzierte Auswahl
an Gestaltungselementen
<wml>
<card id="card1">
<p>Hello World!</p>
<do type="accept" label="Suche">
Zur Suchseite<go href="suche.wml" /></do>
</card>
</wml>
Programmierung von Internetservices
Praktikum SS 03
13
Agenda
1 Einleitung
2 Architektur und verwendete Technologien
3 Entwicklung/Quellcode
4 Vergleich mit Alternativlösung
Programmierung von Internetservices
Praktikum SS 03
14
Systemarchitektur
Webserver
UnivIS
• PHP
• DOMXML-Extension
XML-Schnittstelle
PC
• HTML
Pocket-PC
• cHTML
Programmierung von Internetservices
Praktikum SS 03
Mobiltelefon
• WML
DB
Clients
15
Suchformular
HTML
WML
Quelle: http://www.wiwi.uni-frankfurt.de/~kolbe/praktikum/search.php
Quelle: http://www.wiwi.uni-frankfurt.de/~kolbe/praktikum/search.wml
Programmierung von Internetservices
Praktikum SS 03
16
Quellcode (1)
• HTTP-Request für UnivIS-Abfrage
...
$request =
http://univis.uni-frankfurt.de/prg?
search=lectures&name=logistik&show=xml
...
Quelle: http://www.wiwi.uni-frankfurt.de/~kolbe/praktikum/query.php
Parametertyp
Parameterwert
Bedeutung
search
Gibt den den Themenbereich
lectures, persons,
vor, in dem die Suche
departments, room, ... durchgeführt werden soll
name
{Suchbegriff}
Übergibt den vom User
eingegebenen Suchbegriff
show
xml, short, long, ...
Bestimmt das Ausgabeformat
bzw. die Art der Ausgabe
Programmierung von Internetservices
Praktikum SS 03
17
Quellcode (2)
• Rückgabeformat von UnivIS wird überprüft
• XML-Dokument einlesen
...
// Test, ob ein XML-oder HTML-Dokument zurückgegeben wird
// Wenn HTML zurück, dann Vorgang abbrechen
$check_document = implode ('', file ($request));
$sub = substr($check_document, 0, 6);
if ($sub == "<html>") {
die("Leider hat es zu Ihrer Suche kein Ergebnis gegeben.
(<a href='javascript:history.back()'>Zur&uuml;ck</a>)");
}
//XML-Dokument in DOM-Objekt einlesen
$dom = xmldocfile($request);
...
Quelle: http://www.wiwi.uni-frankfurt.de/~kolbe/praktikum/query.php
Programmierung von Internetservices
Praktikum SS 03
18
Quellcode (3)
• Auswahl zwischen der Suche nach Personen und
Veranstaltungen
...
//SWITCH für die Suchparameter (persons, lectures)
switch ($type) {
//Suche nach Personen
case "persons":
include("persons.php");
break;
//Suche nach Veranstaltungen
case "lectures";
include("lectures.php");
break;
}
...
Quelle: http://www.wiwi.uni-frankfurt.de/~kolbe/praktikum/query.php
Programmierung von Internetservices
Praktikum SS 03
19
Quellcode (4)
• Einlesen der auszugebenden Inhalte in Arrays
( Array: speichert Sequenz von Datenwerten)
...
//Inhalte der XML-Elemente in Variablen ablegen
$lastname
= $dom->get_elements_by_tagname("lastname");
$firstname
= $dom->get_elements_by_tagname("firstname");
$title
= $dom->get_elements_by_tagname("title");
$orgname
= $dom->get_elements_by_tagname("orgname");
$email
= $dom->get_elements_by_tagname("email");
$phone
= $dom->get_elements_by_tagname("tel");
$fax
= $dom->get_elements_by_tagname("fax");
$office
= $dom->get_elements_by_tagname("office");
$ort
= $dom->get_elements_by_tagname("ort");
...
Quelle: http://www.wiwi.uni-frankfurt.de/~kolbe/praktikum/persons.php
Programmierung von Internetservices
Praktikum SS 03
20
Quellcode (5)
• Auswahl des Ausgabemediums
...
// SWITCH für die einzelnen Devices
switch ($HTTP_GET_VARS[device]) {
// Inhalte als HTML rausschreiben
case 1:
for($i=0;$i<$array_length;$i++){
echo "<a href='result.php?
type=" . $type .
"&firstname=". urlencode($firstname[$i]).
"&lastname=" . urlencode($lastname[$i]) .
"&orgname=" . urlencode ($orgname[$i]) .
"&email="
. urlencode ($email[$i])
. "'>";
echo $lastname[$i] . ", " . $firstname[$i] . "</a>\n";
}
...
Quelle: http://www.wiwi.uni-frankfurt.de/~kolbe/praktikum/persons.php
Programmierung von Internetservices
Praktikum SS 03
21
Quellcode (6)
• Ausgabe der im URL-String enthaltenen Parameter als HTML
bzw. WML
...
//Inhalte der XML-Elemente in Variablen ablegen
echo "<p><b>Ergebnisse</b></p>";
echo "<b>Name: </b>";
echo $HTTP_GET_VARS[firstname] . " " .
$HTTP_GET_VARS[lastname] . "<br />";
if(!$HTTP_GET_VARS[orgname] == "") {
echo "<b>Lehrstuhl:</b>".$HTTP_GET_VARS[orgname].„<br/>";};
if(!$HTTP_GET_VARS[email] == "") {
echo "<b>Email:</b> ".$HTTP_GET_VARS[email].„<br />";};
...
Quelle: http://www.wiwi.uni-frankfurt.de/~kolbe/praktikum/result.php
Programmierung von Internetservices
Praktikum SS 03
22
Agenda
1 Einleitung
2 Architektur und verwendete Technologien
3 Entwicklung/Quellcode
4 Vergleich mit Alternativlösung
Programmierung von Internetservices
Praktikum SS 03
23
Vergleich mit Alternativlösung
• Vorteile:
– keine zusätzliche Software (AxKit) nötig
– Beschränkung auf eine Technologie
• kein Einarbeiten in neue Technologien nötig
• bei einfachen Anwendungen schnelle Umsetzung möglich
– vermutlich höhere Performance
• Nachteile:
– DOMXML noch in Entwicklungsphase
– XSLT bietet mehr Flexibilität bei der Transformation von
XML-Daten
– bei komplexen Anwendungen können PHP-Lösungen
schnell unübersichtlich werden
Programmierung von Internetservices
Praktikum SS 03
24
Vielen Dank für Ihre Aufmerksamkeit!