[Home] [By Thread] [By Date] [Recent Entries]

  • To: xml-dev@l...
  • Subject: Constraining a "mixed" mixed content model (XHTML <div>)
  • From: "Mark O. Zorro" <markozorro@f...>
  • Date: Sun, 11 Sep 2005 18:03:01 -0700

In XHTML, several elements, such as <div>, may contain what's called
mixed content. Here's the mixed content model for <div>:

   <!ELEMENT div (#PCDATA | %Block.class; | %Inline.class;)*>

%Block.class; includes several block-level (structural) elements, and
%Inline.class includes several inline-level (text) elements.

The mixed content model for <div> allows strange combinations which
are valid but which are definitely unacceptable. For example, the
following is valid XHTML, but definitely not very pretty:

   <div>Some text.<p>Some more text.</p> And <em>more</em> text.</div>

I'd like to constrain the DTD content model, if at all possible, so
<div> may have one, and only one, of the following:

Either 1)   (%Block.class)*
Or     2)   (#PCDATA | %Inline.class;)*

(Thereby the "mixed" mixed content example given above will not
validate to the constrained DTD content model I seek.)

Anyway, I did some experimentation with some content models. Here's
one content model I tried which, in a purely logical way, makes sense:

   <!ELEMENT div (((#PCDATA | %Inline.class;)*) | ((%Block.class;)*))>

However, it definitely caused problems with TurboXML which analyzed it
and gave the following error message:

"#PCDATA may only appear in the top-level group of a content model"

I'm getting the sinking feeling there's no way to build the content
model I'd like in XML, at least which would work in a DTD. If not,
why not? Would XML Schema or RelaxNG resolve the issue?

Thanks in advance...

Mark
-- 
  Mark O. Zorro
  markozorro@f...

-- 
http://www.fastmail.fm - Same, same, but different?


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member