This has nothing to do with the browser processing the extension, but it starts with how the server processes the extension.
In fact, the spec says:
File extensions are not used to determine the supplied MIME type of a resource retrieved via HTTP because they are unreliable and easily spoofed.
When the page is served as http://keepitsimple-soft.com/question.html, your Apache server includes this HTTP header in the response: Content-Type: text/html
, so the browser knows that it's an HTML page and uses an HTML parser to read it. The HTML parser doesn't process those entity definitions in the DOCTYPE, so it can't correctly interpret them in the SVG.
When the page is served as http://keepitsimple-soft.com/question.svg, the server includes this HTTP header in the response: Content-Type: image/svg+xml
. In this case, the browser recognises the "+xml" part and parses the file using its XML parser. This does interpret the entity definitions, and can therefore handle the SVG fully.
As far as what you should do, you can either use XHTML and stick with the XML parser, or resolve the entity definitions before sending the page over the wire, in which case, your page should work with the HTML parser. (Though I haven't tested this.)