I strongly suspect there's no single answer here given this issue has been around for many years, so I'll post a few quick thoughts to keep the conversation going....
<p> tags in code
You'd need to be careful of making an assumption that all content should be in a
<p> tag - what if the RTF is to present just a xx - you'd have to considerable design login in your templating I suspect ...
This is frought with challenges - the different formats of HTML are all but infinite (e.g. many readers may be considering we would only have
but consider parsing something less 'linear' such as
In addition - you're playing with the content behind the scenes which could make debugging from an editor perspective near impossible.
I'm going from memory here but the RTF snippet isn't an XML document but it's a fragment (and I suspect there's some backend manipulation to avoid the old browser difference behaviour we used to see) - I've not recent experience of trying this but recall it was a nightmare in the page!
If you put the snippet into your own XML DOM then you would be able to control what you do with the content and perhaps manage the content in a more controlled manner
Training costs' the organisation although it moves the requirement from a technical challenge to someone else - seems nice but many organisations will fight back with putting such dependencies (HTML Knoweledge of any sort) on editorial staff. Despite this - it's the most frequently used approach I've seen. If this is just a case of training them on pressing enter after they've entered a single line RTF content perhaps this is more viable
Given the presentation of this is the issue (i.e. when this is published it may look rubbish without the correct
<p> tags I wonder if it would be possible to have something added to the FormatAreaStyles.css to display to an editor that they've not yet created the text in a
<p> tag (perhaps a red border around plain block text) - although this is labelled styling it would involve an awareness (read training) by the editors.
Could you code an extension that would simulate a forced 'enter' and then 'trim' on losing focus from any RTF field?