gymel  | Beispiele  | Linkanzeige

Parameterbeispiel: Anzeige von Hyperlinks

Im allegro-Standardformat sind Links auf externe Dokumente in Kategorie #8e abgelegt. Diese Kategorie erlaubt analog zu USMARC viele Teilfelder für unterschiedliche Aspekte der Beschreibung der externen Ressource, viele davon sind in Zeiten des WWW obsolet.

In der einfachsten Form enthält die Kategorie nur eine durch » ; « getrennte Liste von eventuell unvollständigen URLs, etwa in den drei folgenden Arten:

  1. voll qualifiziert, d.h. unter Angabe des Protokolltyps (http:, ftp:, etc.): Diese nehmen wir für Links auf fremde Inhalte
  2. absolute Pfade, d.h. die URLs beginnen mit einem Schrägstrich »/«: Diese benutzen wir für Links auf Inhalte auf unserem eigenen Webserver (nicht notwendig unsere eigenen Inhalte).
  3. relative Pfade, also alles, was nicht den Protokolltyp oder einen absoluten Pfad angibt: Diese fassen wir als Links auf einen von uns selbst verwalteten Verzeichnisbaum »Digitale Bibliothek« auf. Die URL des Wurzelverzeichisses dieses unseres Verzeichnisbaums ist in den Parametern fest eingetragen.

Folgende Besonderheiten müssen wir außerdem noch beachten:

Um die Mehrfachbelegung zu handhaben, ist die eigentliche Aufbereitung von einer Standardschleife umgeben: #ucc bekommt den urspruenglichen Kategorieinhalt, und wird zusammen mit dem Ende-Test jeweils von vorne beginnend reduziert. #ucd wird jeweils der erste Bestandteil zugewiesen.

#8e + dcc ... f32 acc          % Test und Start
#nr +#98a Z                     % Abbruch stattdessen

#-                             % Einsprung Schleife
#ucc ... dcd e";" F32 =cd       % Initialisierung #ucd

#ucd ...                        % Verarbeitung

#ucc + dcc dcd b";" f32 acc    % Endetest Schleife

...                             % Abschluss

#98a                            % Aussprung

Jetzt geht es los:
  % Code an geeignete Stelle der Parameter einfuegen...
  % Benutzte Anwendervariable sind #ucc und #ucd
  % Benutzte Sprungmarke fuer die Schleife ist #-
  Zunächst wird auf Vorhandensein der Kategorie (hier: #8e) getestet und evtl. ein Durchschuss eingefügt
#8e + dcc p{&130 #0 C} f32 acc
#nr +#98a Z

#-         % Einsprung Schleife
   % Ab hier enthaelt #ucc stets den um fuehrende Leerzeichen
   % bereinigten Rest der Kategorie
#ucc p{C '['} dcd e";" F32 =cd
  In der folgenden Variante werden %5f und %5F in Unterstriche zurückverwandelt. Das erhöht bei unterstrichenem Text natürlich nicht unbedingt die Lesbarkeit...
#ucc p{C '['} dcd e";" F32 ,",%5f,_," ,",%5F,_," =cd
     
   % Ab hier enthaelt #ucd die aktuelle URL bereinigt um 
   % folgende Leerzeichen

   % Behandlung der drei moeglichen Eingabefaelle
   % 1. volle URL
  Die voll qualifizierte URL (erkannt an »://«) aus
#8e http://www.gymel.com/beispiele/8elink.html
wird formatiert zu den (mindestens) drei Zeilen
    [Externes Dokument: <A
    HREF="http://www.gymel.com/beispiele/8elink.html"
    >http://www.gymel.com/beispiele/8elink.html</A>]
und stellt sich so dar:
[Externes Dokument: http://www.gymel.com/beispiele/8elink.html]
#ucd c"://" y0 p{'Externes Dokument: <A' C 'HREF="'} P{'"' C '>'}
#ucd +#98b c"://"

   % 2. absoluter Pfad (auf diesem Server)
  Der absolute (virtuelle!) Pfad (erkannt am führenden »/«) aus
#8e /beispiele/8elink.html#code
wird formatiert zu den (mindestens) drei Zeilen
    [Lokales Dokument: <A
    HREF="/beispiele/8elink.html#code"
    >/beispiele/8elink.html#code</A>]
und stellt sich so dar:
[Lokales Dokument: /beispiele/8elink.html#code]
(Der Browser weiß dann schon, welcher Protokolltyp und welcher Host)
#ucd i4,/ y0 p{'Lokales Dokument: <A' C 'HREF="'} P{'"' C '>'}
#ucd +#98b i4,/

   % 3. relativer Pfad (Volltext)
  Der (zu unserer Digitalen Bibliothek) relative Pfad aus
#8e htmlfaq/faq.htm
wird unter Voranstellung des festen Präfixes http://www.gymel.com/capriccio/ formatiert zu
    [==&gt; <A HREF="http://www.gymel.com/capriccio/htmlfaq/faq.htm"
    >Volltext</A>]
und stellt sich so dar:
[==> Volltext]
(Beachte auch das Escapen von ==> als ==&gt;)
#ucd y0 p{'==&gt; <A HREF="http://www.gymel.com/capriccio/'} P{'"' C '>Volltext'}
  Endebehandlung für die Schleife, #ucc wird allmählich aufgegessen

#98b
#t{'</A>]'}
#ucc + dcc dcd b";" f32 acc
  % Folgende Zahl ueberpruefen, ob sie mit der Setzung 
  % fuer den Parameter zl uebereinstimmt!
#t{&75}


  % Sprungziel, falls #8e nicht belegt war  
#98a

Hier noch einmal der Code ohne Formatierungen:
  % Code an geeignete Stelle der Parameter einfuegen...
  % Benutzte Anwendervariable sind #ucc und #ucd
  % Benutzte Sprungmarke fuer die Schleife ist #-
#8e + dcc p{&130 #0 C} f32 acc
#nr +#98a Z

#-         % Einsprung Schleife
   % Ab hier enthaelt #ucc stets den um fuehrende Leerzeichen
   % bereinigten Rest der Kategorie
#ucc p{C '['} dcd e";" F32 =cd
   % Ab hier enthaelt #ucd die aktuelle URL bereinigt um 
   % folgende Leerzeichen

   % Behandlung der drei moeglichen Eingabefaelle
   % 1. volle URL
#ucd c"://" y0 p{'Externes Dokument: <A' C 'HREF="'} P{'"' C '>'}
#ucd +#98b c"://"
   % 2. absoluter Pfad (auf diesem Server)
#ucd i4,/ y0 p{'Lokales Dokument: <A' C 'HREF="'} P{'"' C '>'}
#ucd +#98b i4,/
   % 3. relativer Pfad (Volltext)
#ucd y0 p{'==&gt; <A HREF="http://www.gymel.com/capriccio/'} P{'"' C '>Volltext'}

#98b
#t{'</A>]'}
#ucc + dcc dcd b";" f32 acc
   % Folgende Zahl ueberpruefen, ob sie mit der Setzung 
   % fuer den Parameter zl uebereinstimmt!
#t{&75}


  % Sprungziel, falls #8e nicht belegt war  
#98a

  % Beachten:
  %  p _ 0
  % (bzw. p _ 1 oder aehnliches) muss ueberall auskommentiert sein!

Das war's!
Letzte Aktualisierung: 6.1.2000
submit bugs here