есть два типа тегов - inline и block (строчные и блочные). Внутри блочных могут быть любые. Внутри строчных - только строчные.
Теги a, span, i, b, strong, em и т.д. строчные, а div - блочный.
Вывод - это нормально, но только если элементы являются строчными (то есть из приведенных вами только span).
Хотя стандарт HTML5 позволяет и такое делать, так что если у вас проставлен соответствующий doctype, документ останется валидным.