[Prev][Next][Index][Thread]

Re: XML catalog draft



> From: Martin Bryan <mtbryan@sgml.u-net.com>
> 
> >[69]  ExternalID := 'PUBLIC' S PublicID ( S SystemID )? |
> >                   'SYSTEM' (S SystemID)?
> >[70]  SystemLiteral := '"' [^"]* '"' | "'" [^']* "'"
> >[70a] PublicID   := RestrictedLiteral
> >[70b] SystemID   := SystemLiteral
> >[70c] RestrictedLiteral := 
> >	'"' RestrictedLiteralChars '"' | "'" RestrictedLiteralChars "'"
> >[70d] RestrictedLiteralChars := (Letter | Digit | S | SpecialChars)*
> >[70e] SpecialChars := ['()+,-./:=?]
> >[71]  [[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.