My question: How is it decided what HTML file to load in each section? This requires a
decision and decisions cannot be made in HTML. Thus, you will need
some programming language to make that decision. Whether it's JavaScript (well, really, ECMAScript) on the client, PHP or ASP or JSP or C# or Python or something on the server, or some custom CGI script written in C++, that decision still has to be made.
Notice that I didn't mention anything about SSI (
Server Side Includes) because it's not normally used for decisions. You
could use it for decisions, but it'll look funny.
-----
Reading back through my post, I realize that I'm assuming that you want the content section of the page to change, whereas you might just be asking how to have static header/footer/navigation sections without loading different content in the content section... In which case, SSI would
totally fit the bill.
Or you could go old-school and have a frameset (note,
not IFrame!). But many usability experts don't like framesets anymore, mostly because people overused and misused them.