The <s:text>
tag displays text with no "decoration".
The default "xhtml" theme's form tags emit table markup.
This means you're currently generating invalid HTML, so the text will show up in essentially arbitrary locations based on how the browser handles stuff showing up in between table rows.
Viewing the source would have answered this question immediately.
You need to either put the text into a table row, as with everything else in the form tag, or use the "simple" theme and do all the layout, error messages, etc. yourself.