code: protected String readDTDKeyword(String prefix)
          throws XMLStreamException
      {
          StringBuilder sb = new StringBuilder(prefix);
  
          while (true) {
              char c;
              if (mInputPtr < mInputEnd) {
                  c = mInputBuffer[mInputPtr++];
              } else {
                  // Don't want to cross block boundary
                  c = dtdNextIfAvailable();
                  if (c == CHAR_NULL) {
                      break; // end-of-block
                  }
              }
              if (!isNameChar(c) && c != ':') {
                  --mInputPtr;
                  break;
              }
              sb.append(c);
          }
          return sb.toString();
      }
docs: Method called usually to indicate an error condition; will read rest
  of specified keyword (including characters that can be part of XML
  identifiers), append that to passed prefix (which is optional), and
  return resulting String.
  
  @param prefix Part of keyword already read in.