W3C home > Mailing lists > Public > w3c-sgml-wg@w3.org > May 1997

Re: [richard@cogsci.ed.ac.uk: conditionals]

From: James Clark <jjc@jclark.com>
Date: Tue, 27 May 1997 10:21:23 +0700
Message-Id: <2.2.32.19970527032123.00a9fcc4@jclark.com>
To: w3c-sgml-wg@w3.org
Cc: richard@cogsci.ed.ac.uk

>The production for ignoreSect [57] is wrong; it requires conditional
>sections within it to be themselves ignoreSect, ie have the keyword
>IGNORE.
>
>We need something like:
>
>ignoreSect ::= '<![' %'IGNORE' '[' ignoredDecls ']]>'
>
>ignoredDecls ::= ... |
>                 '<![' ('IGNORE'|'INCLUDE'|PEReference) '[' ignoredDecls ']]>'
>
>We should also allow the keys of ignored nested conditional sections
>to be references to undeclared parameter entities, say by replacing
>PEReference in the above with    '%' Name ';'

It doesn't need to look past the <![.

>I'm not convinced about the rest of production 57 either: the last
>top-level disjunct appears to match, say,
>
>    <!entity foo "bar">]]>

The final * is in the wrong place: it needs to be moved past the two
following close parentheses.

The idea behind production 57 is to ensure that:

1.  An ignored section ends where an SGML parser thinks it would.  An SGML
parser just looks at <![ and ]]> inside an ignored marked section.

2. Changing IGNORE to INCLUDE wouldn't change where the conditional section
ends.

Without 2, it's impossible to have a really trivial XML parser that just
skips over the prolog without interpreting it.

I think this should do it:

ignoreSect ::= '<![' %'IGNORE' '[' ignoreSectContents ']]>

ignoreSectContents ::= (
 ((SkipLit | Comment | PI) - (Char* ']]>' Char*))
 | ( '<![' ignoreSectContents ']]>')
 | (Char - ([<'"] | ']')
 | ('<! (Char - ('-' | '[')))
)*

James
Received on Monday, 26 May 1997 23:37:53 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:25:26 UTC