base
portal
Suche:
Forum
Start
Neue Seite erstellen
Titel:
<h2>Tag-Datenbanken</h2> Wie definiert man nun eigene Tags? Unter anderem mit einer Datenbank. Diese ist eine ganz normale baseportal-Datenbank und enthält die <i>Namen</i> und das <i>Verhalten</i> neuer Tags. Es können mehrere verschiedene Datenbanken mit gleichnamigen Tags angelegt werden - und somit für verschiedene Zwecke unterschiedliche Ausgaben erzeugen. Um eine Tag-Datenbank in Ihrem Bereich anzulegen, erstellen Sie einfach eine neue Datenbank und klicken Sie dann auf "Tag-Datenbank (XML)" bei den Vorlagen. Hier ein Beispiel einer Tag-Datenbank: <tab> Name|Code date|<c>datum</c> /code|<c>s/</</g; s/>/>/g; $title="Code" if $title eq ""; "<b>$title</b><div style=\"background:#f0f0f0;padding:8px\"><pre>$_</pre></div>"</c> tab|parse /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>date</c>, <c>code</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 Code|Code der beim Anfang oder Ende des Tags ausgeführt wird </tab> Alleinstehende Tags wie z.B. das <c><do action=all></c> von baseportal werden einfach mit Ihrem Tag-Namen angegeben - sobald das Tag gefunden wird, wird der entsprechende Code ausgeführt. Tags die einen Bereich umschliessen, wie z.B. das <c><loop>..</loop></c> beginnen normalerweise mit einem <i>Slash</i> <c>/</c>. Der Code wird dann beim schliessenden Ende-Tag ausgeführt. Manchmal benötigt man auch Code sowohl beim Anfangs- als auch beim Ende-Tag. Dann muss man einfach beide Varianten, also den Tag-Namen mit und ohne <i>Slash</i> <c>/</c> definieren. Der Aufruf der Funktion <c>parse</c> ohne weitere Parameter ändert das Verhalten der weiteren Textanalyse: <h2>Tags im umschlossenden Bereich ausführen</h2> Im Normalfall werden Tags innerhalb eines anderen Tags ignoriert. Beispiel: <code> <code> So sieht ein "loop" aus: <loop> $HTML </loop> <_/code> </code> Hier wird das <c>loop</c> innerhalb des <c>code</c>-Tags <i>nicht</i> ausgeführt, was meistens auch so gewünscht ist. Dies lässt sich ändern, indem man <c>parse</c> aufruft. Damit wird der Bereich den das aktuelle Tag umschliesst nach weiteren Tags untersucht und das nächste gefundene ausgeführt. Hier wiederholt sich das Ganze: Enthält der Code des gefundenen Tags ein "parse" so werden wird darin wiederum nach Tags gesucht, sonst alle weiteren ignoriert: <code> <loop> Und hier der Code: <code> <loop> $HTML </loop> <_/code> </loop> </code> Das erste <c>loop</c> wird gefunden und ausgeführt. Darin enthaltene Tags werden analysiert - so wird das <c>code</c> gefunden und ausgeführt. Das darin enthaltene <c>loop</c> wird <i>nicht</i> gefunden, weil das im <c>code</c>-Tag nicht 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 werden. Der gesamte gefundene Text steht in <c>$_</c> zur Verfügung. Werden innerhalb des regulären Ausdrucks Klammern benutzt, so stehen die Werte wie in Perl üblich in <c>$1</c>, <c>$2</c> etc. bereit. Ein einfaches Beispiel - man möchte ein bestimmtes Wort (z.B. "Achtung") im Text hervorheben: <tab> Name|Code <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|Code <c>(get|put|mod|del)</c>|<c>'<span style="color:blue">'.$_.'</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|Code <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|Code <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 & und ; umschlossen sind, also z.B. < oder © oder die Umlaute ä, ü etc. Hier 2 Beispiele: <tab> Name|Code <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>
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.01s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!