In der Zeit nach der 2. LK-Klausur bis Weihnachten ist Gruppenarbeit angesagt. Jede Gruppe besteht aus 3 - 4 Schüler, die gemeinsam an einem etwas umfangreicheren Programm arbeiten. In diesem Programm sollen die bisherigen Konzepte dynamischer Datentypen angewandt werden.
Programm:
Die Formatierung einer HTML-Seite erfolgt über sogenannte tags. Dabei handelt es sich um in spitze, eckige Klammern eingeschlossene Anweisungen, die genau spezifiziert sind. Jedes tag besitzt eine öffnende und eine schließende Form (Ausnahmen sind z. B. Zeilenvorschub < br > und Bilder < img src=".." >). Viele tags enthalten zusätzliche Formatierungshinweise, wie z. B. bei Links (< a href=".." ... >).
Text, der zwischen den tags eingeschlossen ist, gilt als Kommentar. Hier dürfen auch fehlerhafte Fragmente auftreten.
| öffnendes tag | schließendes tag | Bedeutung |
| <p> | </p> | Paragraph |
| <b> | </b> | Fettdruck (bold) |
| <a ..> | </a> | Link |
| <html> | </html> | HTML-Seite |
| <body | </body> | Textbereich |
| <table> | </table> | Tabelle |
| <br> | ----- | Zeilenvorschub |
| <img> | ----- | Bild |
Beispiele:
Eine wohlgeformte HTML-Seite kann eine beliebige Vielzahl von geschachtelten
Formatierungen enthalten; eine Verschränkung (ein äußerer tag endet vor einem inneren tag) ist dabei nicht erlaubt.
Beispiel für eine wohlgeformte HTML-Seite:
------------------------------------------------------ <html> <head><title>Wohlgeformte HTML-Seite</title></head> <body> <b>Dieser Fettruck enthält <i>kursive</i> und <u>unterstrichene</u> Elemente.</b> </body></html> ------------------------------------------------------
Beispiel für eine falsche HTML-Seite (die viele Browser trotzdem darstellen):
------------------------------------------------------ <html> <head><title>Wohlgeformte HTML-Seite</title></head> <body> <b>Dieser Fettruck enthält <i>kursive</i> und <u>unterstrichene</b></u> Elemente. </body></html> ------------------------------------------------------
Aufgabe:
Es soll ein Java-Programm geschrieben werden, mit dem man Web-Seiten auf deren Wohlgeformheit überprüfen kann. Dabei kann man sich auf eine Untermenge der möglichen tags beschränken. Wichtig ist nur, dass prinzipiell alle auftretenden Fälle berücksichtigt werden.
Eine Internetseite kann als String eingelesen werden. Letztlich kommt es also nur darauf an, einen(sehr langen) HTML-String auf Korrektheit zu überprüfen.
Wünschenswert ist eine minimale grafische Oberfläche, die die Eingabe einer URL ermöglicht. Diese angegebene Adresse soll dann überprüft werden. Um im Zeitlimit zu bleiben, sollte eine Gruppe die Aufgaben unterteilen und dann am Ende zu einer Einheit zusammenfügen.
Die Arbeit ist zu dokumentieren.
Bearbeitungshinweise:
Mit Java kann man eine Internetseite als String einlesen und weiterverarbeiten. Dazu müssen die angegebenen Bibiotheken importiert werden.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
public class Internet {
public static void main(String[] args) {
URL url;
InputStreamReader streamReader;
BufferedReader br;
String html = "";
String inputLine;
try {
url = new URL("http://www.natorp.de");
streamReader = new InputStreamReader(url.openStream());
br = new BufferedReader(streamReader);
while ((inputLine = br.readLine()) != null)
html += inputLine;
System.out.println(html);
streamReader.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}