This doesn't work because sh expects the first argument to be a command to execute. export DISPLAY=:10 is no valid command (and since you pass this to sh as a single argument, it takes everything to be part of the script name to start, even the spaces and colon).
To make sh evaluate the arguments, try sh -c. That will give you a shell which has the variable DISPLAY defined. Since no further commands are on the command line, the shell will terminate and your variable will be lost with it.
Solutions:
- String all commands together
- Execute a script instead
For #1:
<exec executable="sh">
<arg value="-c"/>
<arg value="export DISPLAY=:10 ; xvfb"/>
</exec>
For #2, put all the commands into a normal shell script and have sh execute that.