цитата из стандарта HTML 4:
The P element represents a paragraph. It cannot contain block-level elements (including P itself). 
А поскольку абазац 
 не может содержать в себе блочные элементы, то он автоматически перед ними закрывается, невзирая на то, что именно вы имели в виду, когда писали 
abc 
def
 ghj
В результате h5 не 
внутри, а 
после. И перенос строки, с которым вы боролись, принадлежит не h5, а p. Вот с этой стороны и надо подходить...
P.S. а вообще сходите на w3c.org и скачайте там полное описание CSS2 и HTML 4. От них обычно больше пользы, чем от форумов.
И еще вот что - поставьте Мозиллу. В ней есть DOM Inspector, который умеет  показывать границы элементов, их CSS-описание, и прочее, что может понадобиться веб-разработчику.