Re: XML catalog draft
> From: Martin Bryan <firstname.lastname@example.org>
> > ExternalID := 'PUBLIC' S PublicID ( S SystemID )? |
> > 'SYSTEM' (S SystemID)?
> > SystemLiteral := '"' [^"]* '"' | "'" [^']* "'"
> >[70a] PublicID := RestrictedLiteral
> >[70b] SystemID := SystemLiteral
> >[70c] RestrictedLiteral :=
> > '"' RestrictedLiteralChars '"' | "'" RestrictedLiteralChars "'"
> >[70d] RestrictedLiteralChars := (Letter | Digit | S | SpecialChars)*
> >[70e] SpecialChars := ['()+,-./:=?]
> > [[unchanged]]
> Why is # not included in SpecialChars?
RestrictedLiteralChars is a synonym for 8879's "minimum data character"
(production 78). SpecialChars is a synonym for 8879's "Special" character
class which 8879 defines to be the characters shown for SpecialChars above
and which does not include the # character.
In other words, if we allowed # in SpecialChars, an XML PublicID would
not be a value 8879 minimum literal and hence not a valid 8879 public id.
> (It might be nice to use the URL
> fragment identifier as part of a public ID in some cases, even though this
> might lead to incompatiblities with SGML name rules, which were done before
> URLs became popular.)
It seems to me that a URL makes more sense as a system identifier than
a public identifier. You could use a public identifier and map it into
a URL via the catalog, but I wouldn't say something with a URL
fragment identifier needs to be able to be a public ID.