Hello Michael!
There are various possibilities. It might not be evaluated at all, if the value isn't needed.
It is needed, cause it is used later in a value-of.
It might be evaluated out of sequence (lazily).
It seems, that there is no trace at all.
Also, there are more events notified to the TraceListener than the StandardTraceListener reports. If you write your own TraceListener, you can act on the additional events.
I have my own Listener. I have addes the Script I used and the Code in my Listener that produces the following output:

sourcePath: /
name: xsl:template
name: xsl:value-of
name: xsl:value-of

-- cut - the methods in the listener, that produce the output --

  public void enter(InstructionInfo instruction, XPathContext context) {
    int infotype = instruction.getConstructType();
    if(infotype < 1024) {
      String name = StandardNames.getDisplayName(infotype);
      System.out.println("name: "+name);
  public void startCurrentItem(Item item) {
      if(item instanceof NodeInfo) {
        NodeInfo nodeInfo = (NodeInfo) item;
        String sourcePath = Navigator.getPath(nodeInfo);
        System.out.println("sourcePath: "+sourcePath);

-- cut - the xslt script --

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" encoding="ISO-8859-1"/>
  <xsl:template match="/">
    <xsl:variable name="var" select="Bestellung/Lieferadresse/Name"/>
      <xsl:value-of select="$var"/>
      <xsl:value-of select="Bestellung/Lieferadresse/Name"/>
Viele Grüße / best regards

Marc Pellmann
inubit - the integration experts
inubit AG
Lützowstraße 105-106
D-10785 Berlin
Fon: +49.30. 72 61 12-132
Fax: +49.30. 72 61 12-100
Freecall: 0800-go inubit
Web: www.inubit.com