Wozu SimpleFormEdit

SimpleFormEdit erleichert die Eingaben von Daten in XML, wenn das Schema der XML-Datei gewisse Bedingungen erfüllt. Damit die XML-Datei angezeigt werden kann, muss ein XSL-Stylesheet erstellt werden, welches dann mit dieser Datei verbunden wird.

[ top ]

Erstellen des Schemas

Jeder XML-Datei liegt ein Schema zugrunde, die alle Tags definiert. Um ein Schema erstellen zu können, müssen Sie für den Objekt-Typ XML freigeschalten sein. Sollte dies nicht der Fall sein, wenden Sie sich per E-Mail an ihren lokalen XIMS-Support (für die Universität Innsbruck: xims-support@uibk.ac.at). Es wird empfohlen, einen Ordner schemata anzulegen.

Wählen Sie den XML Objekttyp aus und klicken Sie auf Erstellen. Geben Sie die Location und den Titel ein.

Als Schemasprache soll RELAX NG verwendet werden. Diese Sprache ist leicht verständlich. Für weitreichendere Informationen als sie in diesem HOWTO geboten werden, ist das RELAX NG Tutorial zu empfehlen.

Eine Beispiel-Schema-Datei ist im folgenden abgedruckt:

<?xml version="1.0" encoding="UTF-8"?>
<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" 
xmlns:s="http://xims.info/ns/xmlsimpleformedit" 
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <start>
    <element name="testeintraege">
      <oneOrMore>
        <element name="testeintrag">
            <s:last_modified_attr>1</s:last_modified_attr>
            <attribute name="id"/>
            <optional>
                <attribute name="last_modified"/>
            </optional>
            <element name="testfeld01">
                <s:description show="1">Datum</s:description>
                <s:datatype>datetime</s:datatype>
                <text/>
            </element>
            <element name="testfeld02">
                <s:description>Nur Text</s:description>
                <text/>
            </element>
            <element name="testfeld03">
                <s:description show="1">Auswahl</s:description>
                <s:datatype>stringoptions</s:datatype>
                <s:select>
                    <s:option>Option 1</s:option>
                    <s:option>Option 2</s:option>
                    <s:option>Option 3</s:option>
                </s:select>
                <text>Text zu den Stringoptions</text>
            </element>
            <element name="testfeld04">
                <s:description show="1">Ja/Nein</s:description>
                <s:datatype>boolean</s:datatype>
                <text/>
            </element>
        </element>
      </oneOrMore>
    </element>
  </start>
</grammar>

In der Zeile grammar werden die Namensräume definiert, wobei xmlns:s="http://xims.info/ns/xmlsimpleformedit" spezielle Definitionen für SimpleFormEdit enthält. Zwischen den beiden start-Tags stehen alle Elemente, welche in der XML-Datei vorkommen. Jedes Element wird mit <element name=""> begonnen und mit </element> beendet.

Wichtig für SimpleFormEdit ist:

  • <start> hat genau ein Kindelement <element> (hier: testeintraege)

  • Dieses Element (hier: testeintraege) hat darf nicht leer sein, deshalb <oneOrMore>; außerdem darf es nur ein Kindelement <element> (hier: testeintrag) haben.

  • Dieses Element (hier: testeintrag) muss das <attribute name="id"/> haben, allerdings nicht notwendigerweise an erster Stelle zu stehen.

  • Die Kindelelemente von können eine beliebige Anzahl an <element>-Einträgen sein.

Ein Anwendungsbeispiel: Sie wollen alle wissenschaftlichen Vorträge am Institut in einer XML-Datei speichern. Das Element testeintraege beinhaltet alle Vorträge. Das Element testeintrag beinhaltet eine beliebige Anzahl an Informationen zu genau einem Vortrag.

Praktisch ist es, wenn das Attribut zur letzten Änderung aktiviert wird, damit dieses vorhanden ist, falls es benötigt wird. Die Aktivierung dieses Attributs erfolt durch <s:last_modified_attr>1</s:last_modified_attr> (Zugriff auf den SimpleFormEdit-Namensraum) und um es in der XML-Datei zu speichern, müssen Sie noch <optional> <attribute name="last_modified"/> </optional> eintragen.

Das Element <text> wird im Moment nicht ausgelesen.

Der SimpleFormEdit-Namensraum

Der SimpleFormEdit Namensraum enthält folgende Datentyp-Definitionen (<s:datatype>):

  • datetime: Datum und Uhrzeit. Die Eingabe erfolgt über einen Kalender.

  • boolean: Ja/Nein-Auswahl.

  • stringoptions: Auswahl an Zeichenketten. Die Optionen werden mit

    <s:select> <s:option>Option</s:option> </s:select>

    eingeben.

Ausserdem enthält der Namensraum noch weitere Elemente:

  • description: Bezeichnung, die Links vom Eingabefeld steht. Dieses Element kann ein Attribut 'show' haben. Ist 'show=1' gesetzt, so wird dieses Element in der Liste unten ausgegeben.

  • last_modified_attr: Ist dies auf '1' gesetzt, so wird automatisch Datum und Uhrzeit der letzten Änderung gespeichert.

    <s:last_modified_attr>1</s:last_modified_attr>

[ top ]

Erstellen der XML-Datei

Die XML-Datei erstellen Sie analog zur Schema-Datei. Sie legen die Datei an, indem Sie Location und Titel eingeben. Danach speichern Sie die Datei. Nun klicken Sie auf den Stift, um die eben erstellte Datei zu bearbeiten.

Geben Sie das Wurzelelement Ihres Schemas (hier: testeintraege) im Body ein (Wenn Sie dies nicht tun, erhalten Sie beim Abspeichern eine Fehlermeldung):

<testeintraege>
</testeintraege>

Geben Sie das zugehörige Schema an. Sie können auch danach suchen, indem Sie auf Nach Validierungsschema Suchen klicken.

Verlinken Sie die Datei zur SimpleFormEdit-Option, indem Sie Ja auswählen.

Speichern Sie die Datei. Sie erhalten die Standardansicht.

Sie können die Datei auf zwei verschieden Arten bearbeiten:

  • XML-Code direkt bearbeiten: auf Stift klicken.

  • Mit SimpleFormEdit editieren

Wenn Sie die erste Variante wählen, erhalten Sie dieselbe Seite wie oben, mit dem einzigen Unterschied dass Sie nun mit Klicken auf Mit SimpleFormEdit editieren zum SimpleFormEdit wechseln können.

[ top ]

SimpleFormEdit anwenden

Wenn Sie auf Mit SimpleFormEdit editieren klicken, erhalten Sie folgende Ansicht:

Im Kasten können Sie einen Eintrag hinzufügen.

In den Datumsfeldern wird das aktuelle Datum und die aktuelle Uhrzeit eingeben, die Sie mit einem Klick auf das Kalendersymbol ändern können. Details dazu finden Sie im SimpleDB Howto.

Haben Sie den Inhalt eingegeben, so klicke Sie auf Neuen Eintrag erstellen und die Eingaben werden angelegt. Der Kasten sieht nun so aus:

Sie erhalten grün unterlegt eine Bestätigung, dass der Eintrag angelegt wurde. Sie haben in den Felder die Möglichkeit, einen neuen Eintrag zu machen. Die bestehenden Einträge werden angezeigt, wobei diejenigen Felder sichtbar sind, welche im Element <s:description> das Attribut show="1" haben. Siehe oben. Die Einträge können Sie durch Klicken auf den Stift editieren bzw. durch Klicken auf das rote Kreuz löschen. Wenn Sie mehrere Einträge gemacht haben, können Sie mit den Pfeiltasten die Reihenfolge der Einträge ändern.

Um die Einträge endgültig zu speichern, müssen Sie noch auf Speichern klicken, Sie gelangen dann zur Standardansicht.

Wenn Sie einen Eintrag editieren sieht der Kasten so aus:

Wenn Sie auf Eintrag speichern klicken, werden die Änderungen angenommen, durch Klicken auf Editieren abbrechen, werden die Änderungen verworfen. Im ersten Fall erhalten Sie eine Bestätigungsmeldung und bleiben im Editiermodus dieses Eintrags, im zweiten Fall werden die Felder geleert und Sie können einen neuen Eintrag anlegen. Wenn Sie also einen Eintrag ändern und speichern, müssen Sie danach auf Editieren abbrechen klicken, um einen neuen Eintrag erstellen zu können. Wenn Sie keinen neuen Eintrag erstellen wollen, können Sie gleich auf Speichern klicken, um zur Standardansicht zu gelangen.

Durch Klicken auf XML Quelle editieren gelangen Sie in die XML-Ansicht der Datei, die oben beschrieben wurde.

[ top ]

XSL-Stylesheet erstellen

Damit die Inhalte nun in einem Browser 'schön' angezeigt werden können, muss ein Stylesheet erstellt werden. Es wird empfohlen dazu einen Ordner stylesheets anzulegen.

Wählen Sie den XSLStylesheet Objekttyp aus und klicken Sie auf Erstellen. Geben Sie die Location und den Titel ein. Im Body fügen Sie den XSL-Code ein. Hier ein Beispiel-Code, der weiter unten erklärt wird:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
    <page>
        <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="/<department-location>/ou.xml"/>
        <!-- Hier können META-Daten eingeben werden -->
        <body>
            <!-- Hier kommt der Body -->
        </body>
        <links>
            <link type="locator" title="Titel" href="link.html" />
        </links>
    </page>
</xsl:template>
<!-- evtl. weitere Templates -->
</xsl:stylesheet>

Erklärungen zu XSL-Stylesheet:

  • Im Template, welches den Wurzelknoten adressiert (<xsl:template match="/">), muss das Wurzelelement <page> </page> sein. Nur die Angaben dazwischen werden beim Transformieren mittels XSLT von XML in XHTML übernommen.

  • Mit der Zeile <xi:include ...> werden die DepartmentRoot-Informationen übernommen (z.B. DepartmentRoot-Portlet, CSS, JavaScript). Wird die Zeile weggelassen, so fehlen diese Informationen, kann es passieren, dass die Seite nicht richtig dargestellt wird.

  • Innerhalb der Tags <body> </body> steht alles, was im Inhalts-Teil der Seite stehen soll. Die Elemente der XML-Datei werden über XSLT und XPath angesprochen.

  • Innerhalb der Tags <links> </links> stehen die Document Links. Jeder Document Link ist nach obigem Muster zu erstellen.

Es können noch weitere Templates, Variablen etc. im Stylesheet enthalten sein. Weitere Informationen zu XSL/XSLT/XPath finden Sie bei den Präsentationen und den dortigen weiterführenden Links.

[ top ]