anchor.diff:  Bei leerem Trenner für Bereiche werden Zahlen
   nicht zusammengeführt, sondern einzeln mit dem Trenner für Leerraum verbunden.
   
  +`sd:number-of-columns([<area>])`::
  +   Gibt die Anzahl der Spalten auf der Seite bzw. im angegebenen Bereich.
  +
  +`sd:number-of-pages(<Dateiname oder URI-Schema>)`::
  +   Ermittelt die Anzahl der Seiten der angegebenen (PDF-)Datei. Siehe das Beispiel in <<ch-mehrseitigepdf>>.
  +
  +`sd:number-of-rows([<area>])`::
  +   Gibt die Anzahl der Zeilen auf der Seite bzw. im angegebenen Bereich.
  +
  +`sd:odd(<zahl>)`::
  +   Die Rückgabe ist `true()`,, wenn die angegebene Zahl ungerade ist.
  +
  +`sd:pagenumber(<Marke>)`::
  +   Liefert die Seitenzahl der Seite auf der die angegebene Marke ausgegeben wurde. Siehe den Befehl <<cmd-mark,Mark>> und den Abschnitt über <<ch-verzeichnisseerstellen-marker>>.
  +
  +`sd:randomitem(<Wert>[,<Wert>,...])`::
  +   Gibt einen der Werte zurück.
  +
  +`sd:reset-alternating(<typ>)`::
  +   Setzt den Zustand für `sd:alternating()` für den angegebenen Typ zurück.
  +
   `sd:sha1(<Wert>[,<Wert>, ...])`::
      Erzeugt die SHA-1 Summe der Hintereinanderkettung der Werte als Hex-Zeichenkette. Beispiel: `sd:sha1('Hallo ', 'Welt')` ergibt die Zeichenkette `28cbbc72d6a52617a7abbfff6756d04bbad0106a`.
   
  +`sd:variable-exists(<Name>)`::
  +   Prüft, ob eine Variable definiert wurde.
  +
   `sd:variable(<Name>[, ...])`::
      ist dasselbe wie `$Name`, nur mit der Möglichkeit den Namen auch dynamisch zu erzeugen. Falls `$i` den Wert 3 enthält, liest `sd:variable('foo',$i)` den Inhalt der Variablen `$foo3`. Damit lassen sich Arrays abbilden.
   
  -`sd:variable-exists(<Name>)`::
  -   Prüft, ob eine Variable definiert wurde.
  -
  -`sd:dummytext([<Anzahl>])`::
  -   Gibt den Blindtext "Lorem ipsum..." mit über 50 Wörtern zurück. Mit dem optionalen Parameter kann man festlegen, wie oft der Text wiederholt wird.
  -
  -`sd:loremipsum()`::
  -   Alias für `sd:dummytext()`
  -
  -`sd:randomitem(<Wert>[,<Wert>,...])`::
  -   Gibt einen der Werte zurück.
  -
   
   == XPath-Funktionen
   
  
positive.code: `sd:current-row([<area>])`::
     Gibt die aktuelle Zeile zurück. Wenn `area` angegeben, gibt die Zeile des gegebenen Platzierungsbereichs zurück.
  
  `sd:current-column([<area>])`::
     Gibt die aktuelle Spalte zurück. Wenn `area` angegeben, gibt die Spalte des gegebenen Platzierungsbereichs zurück.
  
  `sd:alternating(<typ>, <text>[,<text>,...])`::
     Bei jedem Aufruf wird das nächste Argument zurück gegeben. Wert des Typs ist beliebig, muss aber eindeutig sein. Beispiel: `sd:alternating("tbl", "Weiß","Grau")` könnte für die Hintergrundfarbe von Tabellen benutzt werden. Beispiel siehe <<ch-wechselnde-zeilenfarben>>.
  
  `sd:reset-alternating(<typ>)`::
     Setzt den Zustand für `sd:alternating()` für den angegebenen Typ zurück.
  
  `sd:keep-alternating(<typ>)`::
     Benutzt den aktuellen Wert von `sd:alternating(<typ>)`, ohne diesen zu verändern.
  
  `sd:count-saved-pages(<Name>)`::
     Gibt die Anzahl der gespeicherten Seiten, die mit `<SavePages>` zwischengespeichert wurden.
  
  // `sd:number-of-datasets(<Sequenz>)`::
  //    Gibt die Anzahl der Datensätze der Sequenz zurück.
  
  `sd:number-of-pages(<Dateiname oder URI-Schema>)`::
     Ermittelt die Anzahl der Seiten der angegebenen (PDF-)Datei. Siehe das Beispiel in <<ch-mehrseitigepdf>>.
  
  `sd:number-of-columns([<area>])`::
     Gibt die Anzahl der Spalten auf der Seite bzw. im angegebenen Bereich.
  
  `sd:number-of-rows([<area>])`::
     Gibt die Anzahl der Zeilen auf der Seite bzw. im angegebenen Bereich.
  
  `sd:attr(<Name>[, ...])`::
     ist dasselbe wie `@Name`, nur mit der Möglichkeit den Namen auch dynamisch (z. B. mit `concat()`) zu erzeugen. Siehe Beispiel bei `sd:variable()`.
  
  `sd:allocated(x,y,<Bereichsname>,<Rahmennummer>)`::
     Gibt wahr zurück, wenn die Zelle belegt ist (seit 2.3.71).
  
  `sd:imagewidth(<Dateiname oder URI-Schema>)`::
     Breite des Bildes in Rasterzellen. Vorsicht: sollte das Bild nicht gefunden werden, wird die Breite des Platzhalters für nicht gefundene Bilder zurückgegeben. Daher muss vorher überprüft werden, ob das Bild existiert.
  
  `sd:imageheight(<Dateiname oder URI-Schema>)`::
     Höhe des Bildes in Rasterzellen. Vorsicht: sollte das Bild nicht gefunden werden, wird die Höhe des Platzhalters für nicht gefundene Bilder zurückgegeben. Daher muss vorher überprüft werden, ob das Bild existiert.
  
  `sd:file-exists(<Dateiname oder URI-Schema>)`::
     Die Rückgabe ist `true()`, wenn der Dateiname im Suchpfad existiert, ansonsten `false()`.
  
  `sd:format-number(<Zahl oder String>, <Tausenderzeichen>, <Kommazeichen>)`::
     Formatiert die übergebene Zahl und fügt Tausender-Trennzeichen hinzu und ändert den Kommatrenner. Beispiel: `sd:format-number(12345.67, '.',',')` ergibt die Zeichenkette `12.345,67`.
  
  `sd:format-string(<Objekt>,<Objekt>,...,<Formatierungsangaben>)`::
     Gibt eine Zeichenkette zurück, die die gegebenen Objekte mit den im zweiten Argument gegebenen Formatierungsanweisungen darstellt. Die Formatierungsanweisungen entsprechen der aus der Programmiersprache C bekannten `printf()`-Funktion.
  
  `sd:even(<zahl>)`::
     Die Rückgabe ist `true()`, wenn die angegebene Zahl gerade ist. Beispiel: `sd:even(sd:current-page())`
  
  `sd:decode-html(<Node>)`::
     Wandelt Texte wie `\&lt;i\&gt;Kursiv\&lt;/i\&gt;` in entsprechendes HTML-Markup.
  
  `sd:odd(<zahl>)`::
     Die Rückgabe ist `true()`,, wenn die angegebene Zahl ungerade ist.
  
  `sd:group-width(<string>)`::
     Gibt die Breite in Rasterzellen für die Gruppe im ersten Argument an. Beispiel: `sd:group-width('Beispielgruppe')`
  
  `sd:group-height(<string>[,<string>])`::
     Gibt die Höhe in Rasterzellen für die Gruppe im ersten Argument an. Beispiel: `sd:group-height('Beispielgruppe')`. Ist ein zweites Argument angegeben, so wird die Gruppenhöhe als Vielfaches der Einheit genommen. Beispiel: `sd:group-height('Beispielgruppe','mm')` gibt die genaue Höhe der Gruppe in mm an.
  
  `sd:pagenumber(<Marke>)`::
     Liefert die Seitenzahl der Seite auf der die angegebene Marke ausgegeben wurde. Siehe den Befehl <<cmd-mark,Mark>> und den Abschnitt über <<ch-verzeichnisseerstellen-marker>>.
  
  `sd:aspectratio(<Bildname>)`::
     Gibt das Ergebnis der Division Bildbreite / Bildhöhe zurück. (D. h. < 1 für Hochkantbilder, > 1 für Querformat.)
  
  `sd:merge-pagenumbers(<Seitenzahlen>,[<Trenner für Bereiche>],[<Trenner für Leerraum>])`::
     Fasst Seitenzahlenbereiche zusammen. Beispielsweise aus `"1, 3, 4, 5"` wird `1, 3–5`.
  
negative.code: Die Layout-Funktionen sind im Namensraum `urn:speedata:2009/publisher/functions/de` (im Folgenden mit `sd:` gekennzeichnet) definiert. Optionale Parameter werden durch eckige Klammern markiert.
  Beispiel: die Funktion `sd:current-row()`  kann auch mit Parameter `sd:current-row('name')` aufgerufen werden. Die Auslassungspunkte `...` bedeuten, dass der letzte Wert beliebig oft wiederholt werden kann.
  
  // Todo: document:
  // dimexpr
  // first-free-row
  
  
  `sd:allocated(x,y,<Bereichsname>,<Rahmennummer>)`::
     Gibt wahr zurück, wenn die Zelle belegt ist (seit 2.3.71).
  
  `sd:alternating(<typ>, <text>[,<text>,...])`::
     Bei jedem Aufruf wird das nächste Argument zurück gegeben. Wert des Typs ist beliebig, muss aber eindeutig sein. Beispiel: `sd:alternating("tbl", "Weiß","Grau")` könnte für die Hintergrundfarbe von Tabellen benutzt werden. Beispiel siehe <<ch-wechselnde-zeilenfarben>>.
  
  `sd:aspectratio(<Bildname>)`::
     Gibt das Ergebnis der Division Bildbreite / Bildhöhe zurück. (D. h. < 1 für Hochkantbilder, > 1 für Querformat.)
  
  `sd:attr(<Name>[, ...])`::
     ist dasselbe wie `@Name`, nur mit der Möglichkeit den Namen auch dynamisch (z. B. mit `concat()`) zu erzeugen. Siehe Beispiel bei `sd:variable()`.
  
  `sd:count-saved-pages(<Name>)`::
     Gibt die Anzahl der gespeicherten Seiten, die mit `<SavePages>` zwischengespeichert wurden.
  
  `sd:current-column([<area>])`::
     Gibt die aktuelle Spalte zurück. Wenn `area` angegeben, gibt die Spalte des gegebenen Platzierungsbereichs zurück.
  
  `sd:current-framenumber(<area>)`::
     Gibt die Nummer des aktuellen Rahmens im Platzierungsbereich zurück.
  
  