Wenn in einem Wiki häufig Links auf Titel in anderen Seiten verwendet werden, wird der Wiki-Text unübersichtlich und schwer wartbar. Ein Link sieht zum Beispiel wiefolgt aus:
Schöner wäre folgender Wiki-Text:
Das Problem dabei: wie weiss das Wiki, dass Titel auf einer anderen Seite liegt und dort einen Untertitel referenziert?
Die Lösung sind Alias-Seiten:
In einer Alias-Seite können Kürzel definiert werden. Jedes Kürzel verweist auf eine Seite oder einen Untertitel in einer Seite. Im Wiki-Text wird eine Alias-Seite mit folgender Anweisung eingebunden:
#ALIASPAGE Seitenname
Es können beliebig viele Alias-Seiten erstellt und eingebunden werden.
Wird in einer Seite eine Alias-Seite eingebunden, werden alle Links der Seite mit den Kürzeln verglichen, welche in der Alias-Seite definiert sind. Stimmt ein Link mit einem Kürzel überein, wird der Link durch den beim Kürzel stehenden Link ersetzt.
Wenn eine Alias-Seite modifiziert wird, werden alle Seiten, welche diese Alias-Seite referenzieren automatisch nachgeführt.
In der Alias-Seite muss mindestens ein Makro: AliasDef enthalten sein. Die Syntax dieses Makros ist:
{{AliasDef | Alias-Seite | Alias-Titel | : }}
Alias-Seite: Seiten-Name [ = Alias-Liste ] Alias-Titel: #Titel [ = Alias-Liste ]
Alias-Liste: Kürzel [* ; Kürzel *]
Beispiel:
{{AliasDef | Sudoku: Begriffe = Begriff; Sudoku-Begriff | #Zeilen, Spalten und Boxen = Zeile; Spalte; Box | Sudoku: Lösungs-Methoden = Methode; Lösungs-Methode | : }}
Alias-Titel gehören immer zur nächsten darüber definierten Alias-Seite. Hinter dem = Zeichen sind durch Strichpunkt getrennte Kürzel definiert. Wenn in einem Link ein solches Kürzel steht, wird der Link durch den links davon definierten Text ersetzt.
In Alias-Seiten (Wurzel) können rekursiv weitere Alias-Seiten (Unterseiten) mit #ALIASPAGE eingebunden werden. Diese Seiten werden eingelesen, nachdem die Wurzel-Seite mit dem #ALIASPAGE verarbeitet ist. Damit werden die Definitionen der Unterseiten mit niedriger Priorität eingebunden. Das heisst, wenn die selbe Definition sowohl in der Wurzelseite, als auch in einer der Unterseiten vorkommt, verdeckt die Definition der Wurzelseite jene der Unterseite.
Eine Anwendung von Unterseiten ist eine technische Beschreibung von Klassen und Sub-Klassen einer Programmiersprache.
function ResolveAliasLink( aAlias ) ' aAlias as untrimmed preprocessed link dim aliasValue, p, pageName, alias, linkText alias = aAlias linkText = alias ' handle "key=pre<sep>*" -> linkText = "key"; alias = "pre<sep>key" p = InStr( alias, "=" ) if p > 0 then linkText = Trim( Left( linkText, p-1 ) ) alias = Trim( Right( alias, Len(alias)-p ) ) alias = Replace( alias, "*", linkText ) end if ' handle "key->ref" -> linkText = "key"; alias = "ref.key" p = InStr( alias, "→" ) if p > 0 then linkText = Trim( Left( linkText, p-1 ) ) alias = Trim( Right( alias, Len(alias)-p-5 ) ) & "." & linkText end if if AliasExists( Trim(alias), aliasValue ) then if aliasValue <> "" then p = InStr( aliasValue, "#" ) if p > 0 then pageName = Left( aliasValue, p-1 ) aliasValue = Right( aliasValue, Len(aliasValue)-p+1 ) if StrComp( pageName, PAGE_NAME, 1 ) = 0 then pageName = "" aliasValue = pageName & aliasValue end if ResolveAliasLink = aliasValue & "|" & linkText else ResolveAliasLink = aAlias end if else ResolveAliasLink = aAlias end if end function