Es gibt auf dem IBR Webserver die Möglichkeit, Webseiten mit Formularen zu gestalten, so dass bei Ausfüllen des Formulars ein XML-Dokument um einen entsprechenden Listeneintrag ergänzt wird. Das ist beispielsweise zur Anmeldung zu Veranstaltungen hilfreich. Dabei geht die Struktur der zu erfassenden Einträge aus einer frei anzugebenden XML-Schema-Definition hervor.
Folgende Dinge sind zu beachten:
<form [lang="en"] [end="2019-01-01"]
class="list"
schema="person.xsd"
href="list.xml"
[notify="steinberg@ibr.cs.tu-bs.de"]
[confirm="//mail" | receipt="//mail"]
failure="Your input has been incorrect or incomplete. You are NOT yet registered."
success="Thanks for your registration."/>
Das Attribut class
mit dem Wert list
ist für diese Form der Formulare zwingend.
Das Attribut schema
gibt die XML-Schema-Definition an, die die Struktur der zu erfassenden Einträge beschreibt. Ggf. kann /ibr/www/xsd/person.xsd
als Vorlage dienen.
Das Attribut href
gibt die XML-Datei an, in der die Eingaben gesammelt werden.
http://www.ibr.cs.tu-bs.de/xsd/list.xsd
.xcmmklist list.xml
erreichen.Relative Pfade für schema
und href
beziehen sich auf das Directory des enthaltenden Dokumentes. Absolute Pfade beziehen sich auf das "DocumentRoot" Verzeichnis des Servers.
Das optionale Attribut notify
gibt die Email-Adresse an, an die bei Anmeldungen zusätzlich eine EMail mit dem neuen XML-Eintrag gesendet werden soll. Es können auch mehrere durch +
getrennte Adressen sein. Leerzeichen dürfen nicht enthalten sein.
Das optionale Attribut confirm
enthält einen XPath Ausdruck, der ein Element des Schemas definiert, in das eine Mailadresse eingegeben werden soll. An diese Adresse wird dann eine Mail mit der Bitte um Bestätigung gesendet. Erst wenn diese Mail beantwortet wird, wird aus einem vorübergehenden Eintrag (status="tentative"
) ein bestätigter Eintrag (status="confirmed"
). Leerzeichen dürfen nicht enthalten sein.
Das optionale Attribut receipt
enthält einen XPath Ausdruck, der ein Element des Schemas definiert, in das eine Mailadresse eingegeben werden soll. An diese Adresse wird dann eine Mail als Bestätigung geschickt. Tatsächlich kann auch ein Ausdruck verwendet werden, der mehrere Mail-Felder spezifiziert, um mehrere Mails zu versenden (Beispiel: receipt="//mail1|//mail2"
) Es ist nur sinnvoll, entweder confirm
oder receipt
zu verwenden (oder keines von beidem). Leerzeichen dürfen nicht enthalten sein.
Das optionale Attribut failure
gibt einen Text an, der im Falle einer fehlgeschlagenen Eintragung (neben einer automatisch erzeugten Fehlermeldung) unterhalb des Formulars angezeigt werden soll.
Das optionale Attribut success
gibt einen Text an, der im Falle einer erfolgreichen Eintragung (neben einer automatisch erzeugten Meldung) unterhalb des Formulars angezeigt werden soll.
Das optionale Attribute lang
kann wie gewöhnlich genutzt werden, um die Darstellung auf eine bestimmte Sprache ("en" oder "de") zu begrenzen. Das ist insbesondere hilfreich, wenn die Attribute notify und success mit angepassten Varianten versehen werden sollen.
Es ist dringend zu empfehlen, mit end="20yy-mm-dd"
ein Ende der Formularanzeige vorzusehen, um unnötige Angriffsflächen bzw. Missbrauch zu späteren Zeitpunkten zu verringern. Parallel dazu kann ein Block der Art <div start="20yy-mm-dd"><p>Es ist keine Registrierung mehr möglich.</p></div>
sinnvoll sein.
Durch das folgende Konstrukt kann die Anzahl der in einer Liste enthaltenen Einträge als einfache Dezimalzahl dargestellt werden:
<span class="list" href="list.xml"/>
Dies kann in fließenden Text eingebettet werden.
Und hierdurch kann ein Link zum Download der Daten als CSV eingebettet werden. Dies sollte auf Mitarbeiter beschränkt bleiben:
<div group="mitarb">
<a class="list-csv" href="list.xml"/>
</div>
Daten können auch direkt in der Webseite angezeigt werden. Auch hier ist die Beschränkung auf Mitarbeiter sehr zu empfehlen:
<div group="mitarb">
<table class="generic">
<colgroup href="list.xml" sort="name1">
<col select="gender1"/>
<col select="name1"/>
<col select="firstname1"/>
<col select="matrikel1"/>
<col select="comment"/>
</colgroup>
</table>
</div>
Es ist sehr zu empfehlen, die Listendatei wirklich mit list.xml
zu benennen, da der Webserver so konfiguriert ist, dass diese Dateien nicht im Klartext ausgeliefert werden können. Zugriff auf Dateien mit diesem Namen ist Mitgliedern der Gruppe "mitarb" vorbehalten. Dies dient also dem Datenschutz. Überhaupt solltet Ihr mit Daten von Studierenden und anderen Personen immer angemessen umgehen, insbesonder nie für Unberechtigte lesbar ablegen und nach Wegfall der Notwendigkeit löschen.
The data could not be saved.
Bei obigem Problem hat die Datei list.xml
wahrscheinlich nicht die richtigen Berechtigungen. Siehe dazu den Abschnitt über das Kommando: xcmmklist
.