http://www.w3.org/1999/XSL/Transform

c.literalCall ([target : xlink], method : string, [name : string, value : string]*) : string

Die Methode literalCall ermöglicht den Aufruf einer Methode und liefert dessen Ergebnis zurück. Der Parameter xlink kann dabei ein vollständiger Verweis sein, der über die Methode xlink erstellt wurde.

Als Parameter kann ein xlink oder ein Methodenname angegeben werden. Der Methodenname ist dann optional, wenn ein xlink ohne weitere Parameter (name, value) angegeben wurde.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:onion="http://onionworks.net/2004/data" version="1.0">
<xsl:template match="/">
<xsl:value-of select="c.literalCall('onion://data/objects/100', 'teaser')" />
<xsl:variable name="teaser" select="c.literalCall('onion://data/objects/100', 'teaser','mode', 'large', 'border', 'yes')" />
<xsl:if test="string-length($teaser) > 0">
<h1>Teaser</h1>
<xsl:value-of select="$teaser" disable-output-escaping="yes" />
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Aufruf einer entfernten Methode

Das erste Beispiel ruft für das Onion-Objekt 100 die literale Methode teaser auf und kopiert das Ergebnis direkt in die Ausgabe. Das zweite Beispiel lädt das Ergebnis der Methode teaser mit den Parametern mode und border in eine Variable. Wenn das literale Ergebnis nicht leer ist, wird eine Überschrift "Teaser" dem Ausführungsergebnis vorangestellt.

Wenn sie den Konstrukt im Beispiel 1 verwenden wird implizit das Attribut "disable-output-escaping" mit dem Wert "yes" versehen. Dies ist nicht der Fall, wenn Sie das literale Ergebnis in eine Variable laden und zu einem späteren Zeitpunkt ausgeben. Wenn sie dieses Attribut nicht hinzufügen wird beispielsweise ein HTML-Dokument kodiert ausgegeben, sprich als "&lt;td&gt;Test ..." in den Ausgabestrom geschrieben.

Das folgende Beispiel zeigt die Verwendung der Methode literalCall als XML-Tag:

<c.literalCall id="onion://data/objects/100" method="teaser" />
<c.literalCall id="onion://data/objects/100" method="teaser" mode="large" border="yes" />
<c.literalCall xsl-variable="content" method="content" />
<xsl:value-of select="string-length($content)" />
Aufruf einer entfernten Methode über ein XML-Tag

Die XML-Schreibweise dient der verbesserten Lesbarkeit. Die Attribute id und method sind reserviert für die Angabe des xlinks und der Zielmethode. Wenn keine Methode angegeben wird, verwendet das System die Methode default. Das Gleiche gilt für den XLink, wird kein XLink angegeben, wird die eigene ID verwendet.
Jedoch kann die Funktion nicht ohne mindestens einen Parameter aufgerufen werden. Das bedeutet, sollte weder der XLink, noch die Methode angegeben werden, so muss mindestens eine Variable (die an die Methode übergeben werden kann) übergeben werden.

Bei der Angabe des Parameters xsl-variable wird die Variable erstellt und mit dem Ergebnis der literalen Methode befüllt.

Die XML-Schreibweise ermöglicht als Vorteil die bedingte Übergabe von Parametern:

<xsl:variable name="teasersRequireBorder" select="false()" />
<c.literalCall id="onion://data/objects/100" method="teaser" mode="large">
<xsl:if test="$teasersRequireBorder">
<xsl:attribute name="border">yes</xsl:attribute>
</xsl:if>
</c.literalCall>
Bedingte Übergabe eines Parameters

In diesem Beispiel wird der Parameter übergeben, sobald der Variable teasersRequireBorder der Wert true zugewiesen wird.