Mit Hilfe einer Reihe von Kurzbefehlen lassen sich Referenzen in FormCalc bequemer erstellen, wodurch der Zugriff auf Objekteigenschaften und -werte erleichtert wird. Die folgende Tabelle bietet einen Überblick über die für FormCalc verfügbaren Referenzsyntax-Kurzbefehle.
$
$ = “Tony Blue”
Bezeichnet die Stamm-Node des Datenmodells xfa.datasets.data. Beispiel:
$data.purchaseOrder.total
xfa.datasets.data.purchaseOrder.total
$event.name
xfa.event.name
$form.purchaseOrder.tax
xfa.form.purchaseOrder.tax
$host.messageBox(“Hello world”)
xfa.host.messageBox(“Hello world”)
$layout.ready
xfa.layout.ready
$record.header.txtOrderedByCity
referenziert den Knoten txtSortiertNachStadt im Knoten header der aktuellen XML-Daten.
$template.purchaseOrder.item
xfa.template.purchaseOrder.item
!
!data
xfa.datasets.data
*
Wählt alle Formularobjekte innerhalb eines gegebenen Containers, z. B. in einem Teilformular, unabhängig von ihrem Namen bzw. alle Objekte mit einem ähnlichen Namen aus.
xfa.form.form1.item[*]
..
Sie können an jeder Stelle in Ihrer Referenzsyntax zwei Punkte einsetzen, um nach Objekten zu suchen, die Teil eines Unter-Containers des aktuellen Container-Objekts (z. B. eines Teilformulars) sind. Beispielsweise bedeutet der Ausdruck Subform_Page..Subform2: Node Subform_Page lokalisieren (wie üblich) und einen Subform_Page untergeordneten Knoten namens Subform2 finden.
Livecycle tree hierarchy Referenz Syntax Kurzbefehle für FormCalc
Subform_Page..TextField2
Subform_Page.Subform1[0].Subform3.TextField2[0]
da sich TextField2[0] im ersten Subform1-Knoten befindet, auf den FormCalc bei der Suche stößt. Ein zweites Beispiel:
Subform_Page..Subform3[*]
gibt alle vier TextField2-Objekte zurück.
#
Das Nummernzeichen (#) dient zur Bezeichnung eines der folgenden Elemente in einer Referenzsyntax:
xfa.form.form1.#subform
Geben Sie in einer Referenzsyntax eine Eigenschaft an, wenn eine Eigenschaft und ein Objekt den gleichen Namen tragen. Beispielsweise greift die folgende Referenzsyntax auf die Eigenschaft name auf einem Teilformular zu, wenn das Teilformular außerdem ein Feld namens name hat:
xfa.form.form1.#subform.#name
[ ]
Die eckige Klammer ([ ]) gibt den Wert für das Vorkommen eines Objekts an. Um eine Referenz mit einem solchen Wert zu erstellen, setzen Sie eckige Klammern ([ ]) hinter einen Objektnamen und fügen Sie zwischen den eckigen Klammern einen der folgenden Werte ein:
[ n ], wobei n eine absolute Vorkommens-Indexnummer ist (der Index beginnt bei 0). Wenn eine Vorkommensnummer außerhalb des zulässigen Bereichs liegt, wird kein Wert zurückgegeben. Beispiel:
xfa.form.form1.#subform.Quantity[3]
refers to the fourth occurrence of the Quantity object.
[ +/- n ], wobei n ein Vorkommen relativ zum Vorkommen des Objekts angibt, von dem der Verweis ausgeht. Positive Werte liefern höhere Vorkommensnummern und negative Werte liefern niedrigere. Beispiel:

   xfa.form.form1.#subform.Quantity[+2]

Diese Referenz liefert das Vorkommen von Quantity, dessen Vorkommensnummer um 2 höher ist als die Vorkommensnummer des Containers, von dem der Verweis ausgeht. Stünde diese Referenz beispielsweise mit dem Objekt Quantity[2] in Verbindung, so wäre sie gleichbedeutend mit:

   xfa.template.Quantity[4]

Wenn die berechnete Indexnummer außerhalb des zulässigen Bereichs liegt, gibt die Referenz einen Fehler aus.

Die häufigste Anwendung dieser Syntax ist die Ansteuerung des vorigen oder nächsten Vorkommens eines bestimmten Objekts. Beispielsweise könnte man bei jedem Vorkommen des Objekts Quantity (außer bei dem ersten) mit Quantity[-1] den Wert des vorigen Quantity-Objekts abrufen.

[*] gibt mehrere Vorkommen eines Objekts an. Das erste benannte Objekt wird gefunden und die mit dem ersten Objekt verwandten Objekte desselben Namens werden zurückgegeben. Beachten Sie, dass bei dieser Notation eine Zusammenstellung von mehreren Objekten zurückgegeben wird. Beispiel:

   xfa.form.form1.#subform.Quantity[*]

Dieser Ausdruck referenziert alle Objekte mit dem Namen Quantity, die mit dem ersten von der Referenz gefundenen Vorkommen von Quantity verwandt sind.

Hinweis: 
In sprachspezifischen Formularen für Arabisch, Hebräisch, Thailändisch und Vietnamesisch befindet sich die Referenzsyntax grundsätzlich rechts (auch bei Sprachen, die von rechts nach links geschrieben werden).
[ ]
Livecycle tree hierarchy Referenz Syntax Kurzbefehle für FormCalc
Subform_Page.Subform1[*] gibt beide Subform1-Objekte zurück.
Subform_Page.Subform1.Subform3.TextField2[*] gibt zwei TextField2-Objekte zurück. Subform_Page.Subform1 wird zum ersten Subform1-Objekt auf der linken Seite aufgelöst und TextField2[*] wird relativ zum Objekt Subform3 ausgewertet.
Subform_Page.Subform1[*].TextField1 gibt beide Exemplare von TextField1 zurück. Subform_Page.Subform1[*] wird zu beiden Subform1-Objekten aufgelöst und TextField1 wird relativ zu den Subform1-Objekten ausgewertet.
Subform_Page.
Subform1[*].Subform3.TextField2[1]
gibt das zweite und vierte TextField2-Objekt von links zurück. Subform_Page.Subform1[*] wird zu beiden Subform1-Objekten aufgelöst und TextField2[1] wird relativ zu den Subform3-Objekten ausgewertet.
Subform_Page.Subform1[*].Subform3[*] gibt beide Exemplare des Objekts Subform3 zurück.
Subform_Page.* gibt beide Subform1-Objekte und das Objekt Subform2 zurück.
Subform_Page.Subform2.* gibt die beiden Exemplare des Objekts NumericField2 zurück.
Hinweis: 

Referenz-Syntax-Kurzbefehle für FormCalc