XVar beschleunigt den Zugriff auf Variablen, was sich bei mehrfachen Aufrufen bemerkbar macht. Wenn die Selektion z.B. in einem RuleSet häufig aufgerufen wird. XVar kann in der Selektion verwendet werden und ersetzt z.B. $var durch XVar('var').
Hintergrund: Eine XPath Selektion mit einer Variablen muss bei jedem Zugriff von XPath übersetzt werden um den Inhalt der Variable zu ermitteln. Verwendet man XVar, so wird die Selektion nur ein Mal übersetzt und ruft bei weiteren Zugriffen die Funktion XVar auf.
Diese Funktion ermittelt den aktuellen Wert einer Variable:
Bei der Nutzung von XPath tritt häufig ein Problem auf, arbeitet man mit Variablen, werden die Werte der Variablen (theoretisch) nur einmal abgerufen und bleiben dann konstant.
Für den eBiss-Mapping-Kontext ist dies nicht ausreichend, weshalb XPath-Ausdrücke, die in Mappings enthalten sind, intern nicht kompiliert, sondern jedesmal live aufgelöst werden. Nur so kommt es zu wirklich variablen Variablen.
In Fällen, in denen Variablen mit Lookups verwendet werden kann dies problematisch sein. Die Lookup-Funktion wird an diesen Stellen häufig neu instanziiert und hat so keine Möglichkeit zu cachen, was zu einer ungewollt schlechten Performance führt, wenn diese gemeinsam mit Variablen verwendet wird.
Als Ausweg gibt es die Funktion XVar.
Diese Funktion ermittelt den aktuellen Wert einer Variable, jedoch in kompilierbarer Form.
Nan kann in den Selektionen (nicht in Target!!!) überall wo momentan var steht, auch XVar('var') eintragen und hätte dasselbe Ergebnis wie zuvor, jedoch ist der Variablenwert cachebar.