[wp-hackers] p inside blockquote

Elliotte Harold elharo at metalab.unc.edu
Fri Mar 2 14:44:06 GMT 2007

Scot Hacker wrote:

> Why? div, blockquote, and p are block-level equals. No XHTML rule says 
> that content inside a div or a blockquote must be in a p container. But 
> WP apparently thinks it must be so.

Actually that's partially wrong, at least in XHTML strict. A blockquote 
must contain block-level elements such as div or p. It cannot validly 
contain raw text. I.e. this is invalid:


However this is valid:


as is this:


The relevant declarations are

<!ELEMENT blockquote %Block;>
<!ENTITY % block
      "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
<!ENTITY % Block "(%block; | form | %misc;)*">

Raw unparented PCDATA isn't allowed in a blockquote.

However in XHTML transitional this changes. Here the content model for 
blockquote is different:

<!ELEMENT blockquote %Flow;>

Thus raw unparented PCDATA is allowed in a blockquote, so it depends on 
which DTD you're using.

Interestingly in HTML 4.0.1 the raw data is not allowed:

<!ELEMENT BLOCKQUOTE - - (%block;|SCRIPT)+ -- long quotation -->

So this is a rare case in which XHTML Transitional is less strict than 
classic HTML, not more.

Elliotte Rusty Harold  elharo at metalab.unc.edu
Java I/O 2nd Edition Just Published!

More information about the wp-hackers mailing list