Installe l'extension pour firefox "html validator" http://users.skynet.be/mgueury/mozilla/
Cela permet de vérifier si ton code est valide selon le w3c
Là tu as un élément inline (ton span) qui contient un élément block (ton ul), cela engendre une erreur de validation.
Tu devrais donc remplacer ton span par un div, ou voir si tu ne peux pas pas garder le ul uniquement, sans rien autour
Dans ton html, tu mets des informations qui ne devrait pas être là.
en effet, les | sont lus, ce n'est pas bon, il devrait apparaitre uniquement par css. Perso, moi j'emploie une bordure sur les li pour séparer les élements de menus.
C'est la même chose pour tes - devant tes éléments de sous menus.
Imagine en plus que ton site est un CMS, cela veux dire que tu dois introduire ces trait d'union pour chaque élément.
Bref, ce sont des éléments de décoration, il faut donc les faire en css.