I undersand getChildHtm() is used for rendering child blocks which are connected in layout xml files, but I can not find any template or block named 'top' or 'bottom'. Also both of them are empty strings. Why are those there in the first place and from where and how is the content eventually attached to them?
There are a lot of
getChildHtml() calls throughout a lot of templates to give you the possibility to add new blocks.
If there is no child block, there is nothing rendered.
If you add a child block - tada - it gets rendererd :-)