Mit Exportvariablen können Sie in Layouts Werte speichern, um sie später (im gleichen Layout oder anderen Layouts) wieder zu verwenden. Unter gewissen Umständen erzeugt die Verwendung von Exportvariablen einen Content-Abhängigkeit, die den Export verlangsamt. Dieser Abschnitt erläutert den Zusammenhang und zeigt, wie die Content-Abhängigkeit vermieden werden kann.
Auf eine Exportvariable können Sie auf zwei Wegen zugreifen:
<!-- erste Variante --> <npsobj insertvalue="var" name="export.myvar"/> <!-- zweite Variante --> <npsobj insertvalue="var" name="myvar"/>
Beim ersten Weg prüft der Export nur, ob es eine Exportvariable namens
myvar
gibt. Ist dies der Fall, wird ihr Wert in die zu
exportierende Datei eingefügt, andernfalls liegt ein Fehler vor. Beim zweiten Weg wird,
sofern es keine Exportvariable namens myvar
gibt, ein
gleichnamiges Feld gesucht und dessen Wert eingefügt.
Dies hat jedoch zur Folge, dass eine
Content-Abhängigkeit
erzeugt wird, wenn die Exportvariable nicht existiert (es sei denn, das
gleichnamige Feld ist als Referenzfeld in export.referenceAttributes
registriert).
Leider funktioniert der erste Weg bis Version 6.7.1 nicht, wenn die Exportvariable einen Kontext (Datei- oder Linkkontext) enthält und Sie auf ein Feld dieses Kontexts zugreifen möchten.
Beispiel für einen Dateikontext:
<npsobj modifyvar="clear" varname="myObject" /> <npsobj context="/public/index.html"> <npsobj modifyvar="append" varname="myObject" name="self" /> </npsobj> <!-- nicht möglich bis Version 6.7.1: --> <npsobj insertvalue="var" name="export.myObject.path" />
Beispiel für einen Linkkontext:
<npsobj modifyvar="clear" varname="myLink" /> <npsobj list="relatedLinks" length="1"> <npsobj modifyvar="append" varname="myLink" name="self" /> </npsobj> <!-- nicht möglich bis Version 6.7.1: --> <npsobj insertvalue="var" name="export.myObject.destinationUrl" />
In diesem Fall kann man zur Vermeidung von Content-Abhängigkeiten vor dem Zugriff auf das Feld prüfen, ob die Variable leer ist:
Dateikontext:
<npsobj condition="isNotEmpty" name="export.myObject"> <npsobj insertvalue="var" name="myObject.path" /> </npsobj>
Linkkontext:
<npsobj condition="isNotEmpty" name="export.myLink"> <npsobj insertvalue="var" name="myLink.destinationUrl" /> </npsobj>
Ab Version 6.7.2 können Sie den export
-Präfix verwenden, wenn Sie auf ein Feld eines Kontexts zugreifen, der in einer Exportvariablen gespeichert ist.