I had also lot of same kind of conditional problems when I wrote my WAP platform -
Developing mobile web publishing platform using XML, XSLT and Perl. « Veiko Herne – lifetime entrepreneur with adventurous soul
In some cases I got it work using choose instead of if. Somehow everything worked much better in Opera than IE.
XPath is not supported at all with browsers (IE 7, Opera 9), so I wasn't able to use it.
If element does not exists you should use apply-templates for that condition.