@Override
  public final void parseDTD(String publicID, StdXMLReader reader, IXMLEntityResolver entityResolver, boolean external) throws Exception {
    if (!external) {
      //super.parseDTD(publicID, reader, entityResolver, external);
      int cnt = 1;
      for (char ch = reader.read(); !(ch == ']' && --cnt == 0); ch = reader.read()) {
        if (ch == '[') cnt ++;
      }
    }
    else {
      int origLevel = reader.getStreamLevel();

      while (true) {
        char ch = reader.read();

        if (reader.getStreamLevel() < origLevel) {
          reader.unread(ch);
          return; // end external DTD
        }
      }
    }
  }
@Override
  public final void parseDTD(String publicID, StdXMLReader reader, IXMLEntityResolver entityResolver, boolean external)