Erweiterungsfunktionen

Die Möglichkeiten der XSLT-Transformation können über Erweiterungsfunktionen ergänzt werden. Cardo stellt einige Erweiterungsobjekte bereit, damit folgende Dinge umsetzbar sind:

  • Zugriff auf Daten/Funktionen von cardo, die nicht über Standard-XSLT nutzbar sind, aber im Ergebnisdokument benötigt werden
    Beispiel: Ausgabe des aktuell angemeldeten Benutzers
  • Erstellung von Karten für das Zieldokument
  • Konfiguration des zu erzeugenden PDF (falls PDF das Zielformat ist)
  • Hilfsfunktionen, die in XSLT fehlen/umständlich umzusetzen sind
    Beispiel: Formatierung eines Datums für die Ausgabe

Es können auch eigene Erweiterungsobjekte erstellt werden um in der Transformation auf eigene Funktionen zuzugreifen.

Erweiterungsfunktionen sind wiederum in Erweiterungsobjekten (extension objects) zusammengefasst, welche einen bestimmten Bereich abdecken.

Damit Erweiterungsobjekte in der Transformationsdatei angesprochen und damit genutzt werden können, muss diesen am Anfang der Transformationsdatei ein Namenskürzel (Namespace) zugewiesen werden. Jedes Erweiterungsobjekt hat eine eindeutig ID. Es erfolgt also ein Mapping eines frei definierbaren Namenskürzels zu einer vorgegebene ID eines Erweiterungsobjektes: 

<?xmlversion="1.0"encoding="utf-8"?>
<xsl:stylesheetversion="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    ...
    xmlns:iduPdf="eo:iduPdf"
    xmlns:iduCore="eo:iduCore"
    ...
    xmlns:msxsl="urn:schemas-microsoft-com:xslt">

cardo stellt drei Erweiterungsobjekte mit den ID's eo:iduCore, eo:iduPdf und eo:iduDocX zur Verfügung. Mit obigen Zeilen wird diesen als Namenskürzel 'iduCore' bzw. 'iduPdf' zugewiesen. Mit diesen Namenskürzeln sind sie nachfolgend in der Transformationsdatei ansprechbar.

Eine detailierte Hilfe zu den Funktionen der Erweiterungsobjekte eo:iduCore, eo:iduDocX und eo:iduPdf finden Sie hier:

http://webs.idu.de/xsdschemas/cardo/docs/CardoXsltExtension.htm

Auch Microsoft stellt ein eigenes Erweiterungsobjekt zur Verfügung, welches oben mit eingebunden wird und über das Namenskürzel msxsl ansprechbar ist. Dieses wird u.a. häufig gebraucht um aus einem XML-Fragment eine Knotenmenge zu machen (Funktion: node-set()).

eo:iduCore

Über dieses Erweiterungsobjekt werden Funktionen angeboten, die u.a. folgende Möglichkeiten bieten:

  • Erstellen von Karten incl. vieler Hilfsfunktionen für Konfiguration von Extent, Selektion, Sketches etc.
  • Zugriff auf das IKX-Klassenmodell (für Puzzle bzw. Metadaten)
  • Datumsfunktionen: FormatDateTime, Now
  • Stringfunktionen: Replace, StringJoin, StringSplit, ToLower, ToUpper
  • XPath-Hilfsfunktionen: SelectNodesByXPathString
  • Benutzerverwaltung: IsUserIsInRole, UserName, UserDescription
  • Formatierte Ausgaben: FormatNumber, FormatByteSize
  • Abfrage der Datensätze einer Ebene über einen Filter: MapQueryReturnXmlDocument

  • Funktionen um Zähler zu registrieren, zu erhöhen und auszulesen:                  (InitCounter,SetCounter,GetCounter,IncreaseCounter).
  • Ermittlung von Geometrieparametern: GetGeomLength, GetGeomPerimeter und GetGeomArea (ab 3.8.5.) 
  • ab 3.8.7 neue Funktion IsRenderTargetDOCX für die Prüfung des Ausgabemodus (im Zusammenhang mit der Ausgabe als DocX Dokument)
  • u.v.m.

eo:iduPdf

Dieses Erweiterungsobjekt ist nur relevant, wenn als Zielformat PDF erzeugt werden soll und bietet viele Konfigurationsmöglichkeiten für das PDF-Dokument:

eo:iduDocX

(im Moment nur für cardo.Button implementiert)

Die Beschreibung aller Funktionen für iduDocX finden Sie hier: http://webs.idu.de/xsdschemas/cardo/docs/CardoXsltExtension.htm.