Exportvariablen und Content-Abhängigkeit

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.