base
portal
Suche:
Forum
Start
Neue Seite erstellen
Titel:
<h2>Tag-Datenbanken</h2> Wie definiert man nun eigene Tags? Natürlich mit einer Datenbank. Diese ist eine ganz normale baseportal-Datenbank und enthält die Namen, die Typen und die Codes neuer Tags. Es können mehrere verschiedene Tag-Datenbanken angelegt werden - und somit für verschiedene Zwecke unterschiedlichen Ausgaben erzeugen. Hier ein Beispiel einer Tag-Datenbank: <tab> Name|Beginn|Ende code|<c>-</c>|<c>s/</</g; s/>/>/g; $title="Code" if $title eq ""; "<b>$title</b><div style=\"background:#f0f0f0;padding:8px\"><pre>$_</pre></div>"</c> c|<c>-</c>|<c>s/</</g; s/>/>/g; "<span color=green>$_</span>"</c> tab||<c>$sepcols||="|"; $seprows||="\n"; chomp; s#$seprows?(.*?)$seprows#$x=$1; $x=~ s!$sepcols!</th><th bgcolor=e0e0e0>!g; "<tr><th bgcolor=e0e0e0>$x</th></tr><tr><td>"#e; s#$sepcols#</td><td>#g; s#$seprows#</td></tr><tr><td>#gs; s#<tr><td>#<tr><td bgcolor=f0f0f0>#g; s#<td></td>#<td> </td>#g; "<ul><table border=1 cellspacing=0 cellpadding=4>$_</table></ul>";</c> </tab> Hier werden die Tags <c>code</c>, <c>c</c> und <c>tab</c> definiert, die für eine Dokumentation nützlich sind. Die Bedeutung der einzelnen Felder: <tab> Feld|Beschreibung Name|Der Name des Tags Beginn|Code der beim Anfangstag ausgeführt wird Ende|Code der beim Endetag ausgeführt wird </tab> Alleinstehende Tags wie z.B. <c><do action=all</c> benötigen nur den "Beginn"-Code, während der Programmcode von umschliessenden Tags wie z.B. <c><loop>..</loop></c> im "Ende" steht. Manchmal benötigt man auch Code in "Beginn" und "Ende". <h2>Tags im umschlossenen Bereich ignorieren</h2> Im Normalfall werden ineinander verschachtelte Tags ausgeführt. Beispiel: <code> <loop> Und hier der HTML-Text: <code> $HTML <_/code> </loop> </code> Hier wird sowohl <c>loop</c>, also auch "code" gefunden und mit dem Resultat des entsprechenden Codes ersetzt. Dies lässt sich unterbinden, indem man in "Beginn" einen Bindestrich <c>-</c> schreibt. Damit werden bis zum dazugehörigen schliessenden Tag alle anderen Tags ignoriert. Das ist bei allen Tags wichtig in denen Tags enthalten sein können, ohne dass diese ausgeführt werden sollen, wie z.B. dem <c>code</c>-Tag: <code> <code> So sieht ein loop aus: <loop> $HTML </loop> <_/code> </code> Hier wird <c>loop</c> nicht ausgeführt, was auch so gewünscht ist. <h2>Reguläre Ausdrücke</h2> "Reguläre Ausdrücke" (auf Englisch <i>Regular Expressions</i>, kurz <i>Regex</i>) dienen der Textanalyse und -bearbeitung und sind sehr mächtig, wenn auch auf den ersten Blick vielleicht etwas kompliziert. Mit einem regulären Ausdruck als Namen kann nach beliebigen Texten gesucht und durch etwas anderes ersetzt werden. Der Ersetzungs-Code steht im "Beginn"-Feld der Tag-Datenbank, das "Ende"-Feld wird nicht genutzt. Einfaches und naheliegendes Beispiel: Man möchte ein bestimmtes Wort (z.B. "Achtung") im Text hervorheben. Die Umsetzung ist einfach: <tab> Name|Beginn|Ende <c>(Achtung)</c>|<c>'<span style="color:red">Achtung</span>'</c>| </tab> Wo immer "Achtung" auf der Seite auftaucht, würde es jetzt Rot markiert werden. Um mehrere Wörter zu bestimmen, schreibt man z.B.: <tab> Name|Beginn|Ende <c>(get|put|mod|del)</c>|<c>'<span style="color:blue">'.$1.'</span>'</c>| </tab> Hier würden die baseportal-Befehle "get", "put", "mod" und "del" in einem Template automatisch blau markiert werden. Das macht z.B. in einer baseportal-Dokumentation Sinn. Die <c>|</c> trennen verschiedene Textalternativen. Um genau zu sein würden auch Teile mitten in Wörtern entdeckt werden, z.B. "forGET". Um nun wirklich nur Wörter zu erkennen, müsste man schreiben: <tab> Name|Beginn|Ende <c>\b(get|put|mod|del)\b</c>|<c>'<span style="color:blue">'.$1.'</span>'</c>| </tab> <c>\b</c> hat eine besondere Bedeutung: Es passt auf "Wortgrenzen". Eine sinnvolle Erweiterungen dieses Beispiels ist übrigens die automatische Verlinkung zu einer Glossar-Datenbank, in der die Begriffe im Detail erklärt werden. Der Code müsste dann so aussehen: <tab> Name|Beginn|Ende <c>\b(get|put|mod|del)\b</c>|<c>"<a href=\"baseportal.pl?htx=$htx&Name==$_\">$_</a>"</c>| </tab> <h2>Entities definieren</h2> Mit Hilfe der regulären Ausdrücke können auch die im XML-Standard definierten sog. <i>Entities</i> erzeugt werden. Sie kennen diese wahrscheinlich schon aus HTML, das sind die "Sonderzeichen", die von <c>&</c> und <c>;</c> umschlossen sind, also z.B. <c><</c> oder <c>©</c> oder die Umlaute <c>ä</c>, <c>ü</c> etc. Hier 2 Beispiele: <tab> Name|Beginn|Ende <c>&myname;</c>|<c>"Max Meier"</c>| <c>&jetzt;</c>|<c>datum "jetzt", "Stunde:Minute"</c>| </tab> Der Text... <code> Mein Name ist &myname; und es ist jetzt genau &jetzt; Uhr. </code> ...führt damit zu folgender Ausgabe <code> Mein Name ist Max Meier und es ist jetzt genau 03:59 Uhr. </code> <!-- <!h2>Spezielle Namenswerte</h2> Beim Namen gibt es spezielle Werte: <tab> Wert|Beschreibung <c>*</c>|Wird bei jedem Tag ausgeführt <c>.</c>|Wird beim Beginn/Ende der Seite ausgeführt </tab> Mit dem Stern <c>*</c> lässt so z.B. ein Strukturbaum der XML-Seite erstellen: <tab> Name|Beginn|Ende <c>*</c>|<c>$struktur.=" " x (@_parents*2).$_tag</c>| </tab> <!h2>Variablen</h2> Wird ein Tag-Code ausgeführt stehen verschiedene Variablen zur Verfügung: <tab> Name|Beschreibung <c>$_</c>|Enthält im "Ende"-Code den Inhalt des eingeschlossenen Bereichs <c>$_tag</c>|Name des Tags (Nur bei Name=* sinnvoll) <c>@_parents</c>|Die umschliessenden Tags <c>$_query</c>|Die Parameter des Tags <c>%_</c>|Die Parameter des Tags aufgeschlüsselt nach Name=Wert </tab> --> <h2>Tag-Datenbank einbinden</h2> Um eine Tag-Datenbank auf einer Seite einzubinden, gibt es den Befehl <c>tags</c>: <code> tags "tagdb"; </code> Dieser lädt alle Tags die in <c>datenbank</c> gespeichert sind und wertet die Seite damit aus. Da sich der Befehl <c>tags</c> auf die Analyse der Seite auswirkt, muss er VOR der Ausführung der Seite aktiviert werden. Dies geschieht im "Beginn"-Code der Seite. Es können auch mehrere Tag-Datenbanken eingebunden werden: <code> tags "tabdb1"; tags "tabdb2"; </code> Die Reihenfolge ist wichtig, denn falls in <i>tagdb2</i> gleichnamige Tags vorkommen, überschreiben diese diejenigen in <i>tag-db1</i>. Sie können allerdings angeben, ob sie dieses Überschreiben wollen: <!-- <!h2>Gültigkeit von Tags bestimmen</h2> Durch die Angabe <code> tags "tabdb2", "+"; </code> werden nur Tags übernommen, die noch nicht definiert sind. Wichtig ist dies auch bei <c>include</c>: Standardmässig übernimmt eine eingebundene Seite alle Tag-Definitionen. Will man dies nicht, so muss man im <c>include</c> angeben, dass die Tags gelöscht werden sollen: <code> <include src="seite2" tags="*"> </code> Somit sind nur die normalen baseportal-Tags gültig. Will man auch diese Tags verhindern, bedarf es der Angabe: <code> <include src="seite2" tags="-"> </code> Damit sind wirklich überhaupt keine Tags mehr definiert. Die Angabe dieser Parameter ist auch im <c>tags</c>-Befehl möglich. So kann man in einer neuen Seite mit <code> tags "*"; </code> bestimmen, dass, auch wenn diese Seite mit bereits definierten Tags aufgerufen wird, keine Tags ausser den baseportal-Tags ausgeführt werden. Natürlich kann dabei auch gleich eine bestimmte Tag-Datenbank eingebunden werden: <code> tags "tagdb", "*" </code> Hier eine Übersicht: <tab> Parameter|Beschreibung <c>+</c>|Tag nur hinzufügen, wenn nicht schon vorhanden <c>*</c>|Alle bisher definierten Tags löschen, bis auf die baseportal-Tags <c>-</c>|Alle Tags löschen, auch die baseportal-Tags </tab> -->
Name:
Passwort:
Stichworte:
Version:
1
2
3 Angebot:
Alle
Nur Miete / Lizenz
Nur Miete / Lizenz professional
Nur Miete
Nur Miete smart + pro
Nur Miete smart + pro / Lizenz
Nur Miete pro
Nur Miete ab pure2, smart2, pro1
Nur Lizenz
Nur Lizenz professional
Nur Kostenlos
Ohne Änderungen zurück zur Seite
-
+
©
baseportal
GmbH. Alle Rechte vorbehalten.
powered in 0.00s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!