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

  • From: Rob Lugt <roblugt@e...>
  • To: Stefan Kamphausen <kamphausen@n...>, xml-dev@l...
  • Date: Tue, 21 Nov 2000 11:31:05 +0000

Stefan Kamphausen wrote:-
>
> In my DTD I define an entity "Inline" that should be used wherever the
'usual
> text' appears:
>
> <!ENTITY % text        "(tabelle | liste | bild | nsi |
>                         link | publikation)"                         >
> <!ENTITY % Inline      "(#PCDATA | %text; )"                         >
>
> Later this is used:
> <!ELEMENT  ainhalt      (%Inline;)*                          >
>
> But I can't use a multiline content within <ainhalt> .. </ainhalt>
> because PSGML doesn't indent this. Where's the error? I don't think
> it's with PSGML because with good DTD written by professionals it
> works just fine.

I haven't used PSGML/Emacs, but I can see that your DTD is invalid.  The
Mixed Content model is defined as:-
[51] Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*'   |   '(' S?
'#PCDATA' S ')'

In particular, the mixed content model does not allow bracketed
sub-sequences.  When your DTD is expanded, your
"ainhalt" content model would look like this:
<!ELEMENT ainhalt ((#PCDATA | (tabelle | liste | bild | nsi | link |
publikation)))* >
This is not a legal, what you need is it to be resolved to this:-
<!ELEMENT ainhalt (#PCDATA | tabelle | liste | bild | nsi | link |
publikation)* >
So you need to adjust your parameter entities accordingly.

Hope this helps,
Rob Lugt
ElCel Technology


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