Aufgabe
|
Entwicklung einer Abstrakten Syntax und einer Klassenstruktur
für eine Datenstruktur zur Verarbeitung von XML/HTML-Dokumenten
|
| |
Aufgabenbeschreibung
|
|
|
ein XML/HTML-Dokument besteht aus normalem Text und Elementen
|
| |
|
normaler Text: ASCII-Zeichen und
Ersatzsequenzen für Sonderzeichen,
&<name>; oder &#<zahl>;
Beispiel: < für <, ! für !
|
| |
|
Elemente bestehen aus tags und einem Inhalt (body)
|
| |
|
tags sind in < und > geklammert
Beispiel: <body ...>
Groß- und Kleinschreibung
ist signifikant
|
| |
|
fast alle Elemente besitzt eine Start- und einen Ende-tag
Beispiel: <p>, <P>
|
| |
|
Ende-tags besitzen den gleichen Namen mit
mit vorangestelltem /
Beispiel: <head> und </head>
|
| |
|
tags können zusätzliche Attribute enthalten,
Attribute bestehen aus
einfachen Namen oder Name-Wert-Paare,
bei Attributnamen
ist die Groß- und Kleinschreibung ebenfalls signifikant,
genauso wie bei den Werten.
Ende-tags haben keine Attribute.
Beispiel: <tag attr1 attr2=abc attr3="xyz uvw">
|
| |
|
Kommentare können in den Text an beliebiger Stelle eingefügt werden,
öffnende Klammer ist <!--, schließende Klammer -->
Beispiel: xyz<!-- ein Kommentar -->123
|
| |
Ziel
|
|
|
eine abstrakte Syntax in Haskell
|
| |
|
und ein OMT-Diagramm für ein
geeignetes Datenmodell
|
| |
|
einfache Beispiele für Verarbeitungsfunktionen:
Rücktransformation in einen normalen Text
Extraktion der reinen Textteile
Sammeln aller referenzierten URLs
|
| |
|
als abstrakte Syntax
|
|
Implementierungs-Skizze
|