← Prev in month ← Prev in thread

Constraining a "mixed" mixed content model (XHTML <div>)

From
Mark O. Zorro <>
To
Date
2005-09-12T01:03:01Z
ID
<>
Thread
Constraining a "mixed" mixed content model (XHTML <div>)
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
  

-- 
http://www.fastmail.fm - Same, same, but different
← Prev in month ← Prev in thread