Hi,
while working on a patch I noticed we do this in the SGML docs (for
example in indexam.sgml and a bunch of other files):
<para>
... some text ...
</para>
<para>
<programlisting>
some code
</programlisting>
... description of the code.
</para>
That is, the program listing is in a paragraph that starts immediately
before it. I just noticed this ends up like this in the HTML:
<p>... some text ...</p>
<p></p>
<pre>some code</pre>
<p>... description of the code.</p>
That is, there's an empty <p></p> before <pre>, which seems a bit weird,
but it seems to render fine (at least in Firefox), so maybe it looks
weird but is not a problem in practice ...
I did search for what (X)HTML says about this, and the only thing I
found is HTML5 flow control section [1], which says
... elements whose content model allows any flow content should
have either at least one descendant text node ...
Ofc, we're rendering into XHTML, not HTML5. However, W3 advises against
this in the HTML4.0 document too [2]:
We discourage authors from using empty P elements. User agents
should ignore empty P elements.
So it might be "OK" because browsers ignore those elements, but maybe we
should stop doing that anyway?
regards
[1]
https://www.w3.org/TR/2011/WD-html5-20110525/content-models.html#flow-content-0
[2] https://www.w3.org/TR/1998/REC-html40-19980424/struct/text.html#h-9.3.1
--
Tomas Vondra
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company