     { parameter-entities assoc } ;
 C: <dtd> dtd
 
-UNION: dtd/f dtd POSTPONE: f ;
-
 TUPLE: doctype-decl < directive
     { name string }
-    { external-id id }
-    { internal-subset dtd/f } ;
+    { external-id maybe{ system-id public-id } }
+    { internal-subset maybe{ dtd } } ;
 C: <doctype-decl> doctype-decl
 
 TUPLE: notation-decl < directive


TUPLE: public-id { pubid-literal string } { system-literal string } ;
C: <public-id> public-id

UNION: id system-id public-id POSTPONE: f ;

TUPLE: dtd
    { directives sequence }

TUPLE: interpolated var ;
C: <interpolated> interpolated

TUPLE: name
    { space maybe{ string } }
    { main string }
    { url maybe{ string } } ;
C: <name> name

: ?= ( object/f object/f -- ? )
