Das sd:library- Element

Faßt mehrere sd:template -Elemente zusammen. Dieses Element hat einer Sonderfunktion und ist nur in einer Ausgabeseite vom Type 'Library' erlaubt. Dort dient es als Wurzelelement. Das sd:name -Attribut ist immer gleich dem Dateinamen.
Typ
Attribute
sd:name
Legt den Namen des Objektes fest. Dieses Attribut ist immer ein Pflicht-Attribut.
Child-Elemente
Beispiele
Beispiel für eine kleine Library mit zwei Templates, gespeichert in der Ausgabeseite lib.html:
<sd:library xmlns:sd="http://www.server-daten.de/"
    xmlns="http://www.w3.org/1999/xhtml">

    <sd:template sd:name="myName">
        Max Mustermann
    </sd:template>

    <sd:template sd:name="searchLabel">
        <sd:choose-lang>
            <sd:span sd:lang="de">Suchen</sd:span>
            <sd:span sd:lang="fr">chercher</sd:span>
            <sd:span>Search</sd:span>
        </sd:choose-lang>
    </sd:template>

</sd:library>
Diese kann in einer Ausgabeseite mit dem folgenden Code verwendet werden:
<sd:call-template sd:name="call-myName"
    sd:library-name="lib.html" sd:template-name="myName" />
Die sprachabhängige Beschriftung für den Suchbutton, die über viele Ausgabeseiten hinweg einheitlich sein soll, erfolgt so:
<sd:button sd:name="myButton">
    <sd:label-standard>
        <sd:call-template sd:name="call-searchLabel"
        sd:library-name="lib.html" sd:template-name="searchLabel" />
    </sd:label-standard>
</sd:button>
Damit kann an verschiedenen Stellen unterschiedlicher Ausgabeseiten immer der Inhalt des Templates ausgegeben werden, so daß sich dieser Inhalt zentral verwalten läßt.
Bemerkungen
Beim sd:libary-Element gibt es eine Inkonsistenz der Dokumentation, die nicht vermeidbar ist: Es genügt, das Element als Wurzelelement so zu belassen, wie es beim Erstellen einer neuen Library-Ausgabeseite vorgegeben wird. Es muß kein sd:name-Element mit dem Dateinamen eingefügt werden, dies erledigt der Code im Hintergrund. Da aber die XmlSchema-Datei das sd:name-Attribut überprüft und die Erzeugung der Schema-Datei mit der Erzeugung der Dokumentation synchronisiert sind, taucht das sd:name-Attribut auf dieser Dokumentationsseite als Pflichtattribut auf, obwohl es nicht manuell eingefügt oder beim Ändern des Dateinamens manuell geändert werden muß.

Unterschiedliche Validierung von gewöhnlichen Ausgabeseiten und Libraries
Die Validierung von Ausgabeseiten und Libraries unterscheidet sich an einer Stelle: Bei Ausgabeseiten wird für Attributwerte, die auf andere sd-Elemente verweisen und nur einen gewissen Typ korrekt verarbeiten, geprüft, ob es ein Element mit diesem Namen gibt. Ansonsten wird die Ausgabeseite als invalide zurückgewiesen. Bei Libraries entfällt diese Prüfung absichtlich.
Beispiel
Eine Ausgabeseite mit dem folgenden Code ist ungültig:
<body>
	<sd:param sd:name='parameter-name-1' sd:std-value='Max Mustermann'/>
	<sd:value sd:param-name='parameter-name-2'/>
</body>
Denn das Attribut sd:param-name erwartet einen Namen, der Wert des sd:name -Attributes eines sd:param -Elements ist. Wird der Ausdruck 'paramter-name-2' durch 'parameter-name-1' ersetzt, so ist die Ausgabeseite valide und zeigt den Parameterwert 'Max Mustermann' an. Diese scharfe Validierung ist sinnvoll, um mögliche Fehlerquellen zu reduzieren.

Ein sd:template -Element kann dagegen wie folgt aufgebaut sein:

<sd:template sd:name="myName">
	<div style="background-color:yellow;">
		Name: <sd:value sd:param-name="myParam" />
	</div>
</sd:template>
Hier wird das sd:value -Element mit einem sd:param-name -Wert verwendet, der in der Library unbekannt ist. Enthält die Ausgabeseite, welche dieses sd:template -Element aufruft, ein sd:param -Element mit dem Namen 'myParam', so wird dieser Wert beim Ausführen ausgegeben.

An diesem Beispiel wird deutlich: Ein sd:template -Element holt sich gewisse aktuelle Werte aus der aufrufenden Umgebung, ohne daß diese Werte explizit übergeben werden müßten. Damit kann dasselbe sd:template -Element verschiedene Ausgaben erzeugen, falls es von verschiedenen Ausgabeseiten her aufgerufen wird. Aufgrund dieser Flexibilität kann allerdings nicht mehr so genau validiert werden, wie dies für gewöhnliche Ausgabeseiten möglich ist.



Kontaktformular:

Schreiben Sie mir und wir bauen gemeinsam Ihre neue Web-Datenbank!

Die Erläuterungen zum Datenschutz habe ich gelesen und stimme diesen zu.

© 2003-2019 Jürgen Auer, Berlin.