What methods are available to include other HTML documents? I'd like to know all that are out there, but I'd really like to know if there are some simple, elegant ones.

For example, I don't want to re-write the HTML on every single one of my pages for the header, footer, left navigation etc. I would like that HTML to be in one file so it can easily be changed later, affecting my entire site.

I'll start off (with some not-so elegant solutions, which is why I posted this question):

1) insert an externally-linked JavaScript script into the HTML page where you want the generic HTML to output. In the JavaScript script, have a whole bunch of document.writes that just print out the HTML. For example

html code here
<script language="JavaScript" src="externalGenericHeader.js"></script>
more html code here

2) use frames. This is obviously very debated, and I want a better solution than this.

3) Can an HTML "object" element be used? WC3 claims it can, but I can't get it to work with a basic example using IE 5.5.