Mixed Content Models

Lars Marius Garshol larsga at ifi.uio.no
Mon Sep 21 21:09:47 BST 1998

* Jerome McDonough
| I've inherited a DTD for development that was originally intended to
| be an SGML DTD, and has been converted to XML.  Contained within it
| is the following:
| <!ELEMENT qstn   (#PCDATA | (preQTxt?, qstnLit?, postQTxt?, forward?,
| 						  backward?, ivuInstr*))*
| Is this a legitimate content model under XML section 3.2.2?

No, it is not. XML mixed content models must be of the form

<!ELEMENT qstn  (#PCDATA | child1 | child2 | child3 ...)*>

| Msxml doesn't have a problem with it, 

MSXML is not updated to the latest specification.

| and nsgmls using the -wxml flag also happily parses the DTD.

Hmmm. This deviation is not documented in the SP documentation.

| IBM's xml4j, however, complains:
| "Codebook.dtd: 1256, 33: This content model is not matched with the
| mixed model '(#PCDATA|FOO|BAR|. . .|BAZ)*': '(#PCDATA|(preQTxt?, qstnLit?,
| postQTxt?,forward?,backward?,ivuInstr*))*".

This is correct behaviour. (Note that it also gives an example of a
correct mixed content model.)
| I suppose this boils down to, should the parser ignore what's within
| a content group when evaluating whether someone is trying to
| constrain the order or number of occurrences of 'child elements.'
| If the only 'child elements' to be considered in the above case are:
| 	A.	#PCDATA, and
| 	B.   (preQTxt?, qstnLit?, postQTxt?, forward?, backward?, ivuInstr*)
| then the above content model simplies to (A | B)* and doesn't appear
| to conflict with section 3.2.2.

Well, it does, you see, because it conflicts with the grammar, so this
is actually a well-formedness error.

| But if 'child elements' means any element, even those within a
| group, then my content model is probably bogus.  Can someone tell me
| which is the correct interpretation?

Your content model is bogus. :)

--Lars M.

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)

More information about the Xml-dev mailing list