It isn't supposed to work like that. To do this, you need to make use of some of the <trial> element's member functions via /ontrialbegin. You'll want to see the language reference for setstimulustime(), insertstimulustime() and resetstimulusframes().
Edited to add:
[1] There are, of course, corresponding frame-based functions: setstimulusframe(), insertstimulusframe(), etc.
[2] Here's a re-posting of a self-contained illustrative example (http://www.millisecond.com/forums/Topic11148.aspx#11148):
<list fixationduration>
/ items = (500, 5000, 10000)
</list>
<trial mytrial>
/ ontrialbegin = [trial.mytrial.setstimulustime(text.a, list.fixationduration.nextvalue);
trial.mytrial.insertstimulustime(text.b, list.fixationduration.nextvalue)]
/ ontrialend = [trial.mytrial.resetstimulusframes()]
/ stimulustimes = [0=fixation]
/ validresponse = (57)
</trial>
<text fixation>
/ items = ("+")
</text>
<text a>
/ items = ("A")
/ position = (45%, 50%)
</text>
<text b>
/ items = ("B")
/ position = (55%, 50%)
</text>
<block myblock>
/ trials = [1-3=mytrial]
</block>