Parameter entity reference error with expat

Steve Harris sharris at
Wed Jul 15 02:55:35 BST 1998

I'm working out a small DTD by inlining it with some sample data. It
uses a single internal parameter entity and refers to the entity twice
in the DTD. Emacs's 'psgml' seems to validate and do all the
substitutions as expected. If I run the file through expat, though, it
reports the following error:
	illegal parameter entity reference

My understanding of the spec. is that a non-validating parser does not
have to expand an external entity, and I could understand that behavior
being applied here, but is it truly 'illegal' to use a parameter entity
reference in this fashion?

Here's a snippet of problematic file:

<?xml version="1.0" encoding="UTF-8">
<!DOCTYPE options [
  <!-- the whole document -->
  <!ELEMENT	options		(head?, macro*)>
  <!ELEMENT	head		ANY>
  <!ELEMENT	app-name	(#PCDATA)>
  <!ELEMENT	version		EMPTY>
  <!ATTLIST	version
			major		CDATA		#REQUIRED
			minor		CDATA		#REQUIRED>
  <!ELEMENT	macro		(flag|arg)+>
  <!ATTLIST	macro
			id			ID
			argc		CDATA		"0">

  <!-- shared attributes for certain macro sub-elements -->
  <!ENTITY % entry-atts
			'name		CDATA		#REQUIRED
			presence	(inc|exc)	"inc"'>

  <!ELEMENT	flag		EMPTY>
  <!ATTLIST	flag
			%entry-atts;> <!-- ** expat quits here ** -->
  <!ELEMENT	arg			(#PCDATA)>
  <!ATTLIST	arg

Note that the ATTLISTs for entities 'flag' and 'arg' attempt to expand
an entity called 'entry-atts', for which expat reports an error. I'd
appreciate any assistance in interpreting the spec. here. Is expat doing
the right thing?


Steven Harris
Software Engineer
Primus Knowledge Solutions

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

More information about the Xml-dev mailing list