private void ReadExternalID () {
switch (PeekChar ()) {
case 'S':
cachedSystemId = ReadSystemLiteral (true);
break;
case 'P':
cachedPublicId = ReadPubidLiteral ();
if (!SkipWhitespace ())
throw NotWFError ("Whitespace is required between PUBLIC id and SYSTEM id.");
cachedSystemId = ReadSystemLiteral (false);
break;
}
}