You probably want to change !(IE) to (!IE)
In addition, the "normal" <body> tag you are talking about is in the conditional comment. The fact that it does not matter on another line is still inside the conditional comment tag, so it is affected as such.
Conditional comments for IE work using regular HTML comments <!-- --> , so any code inside the "false" conditional code is simply commented out; <!-- <body class="ie6"> --> IE then has its own syntax inside this. Thus, non-IE browsers just see the commented-out line, and IE sees it as an instruction to execute.
Because of this, only one body tag is displayed, and only one is used.
More explanation
<body>
In IE, it says:
<if greater than ie9, or not ie> (ie conditional comment) putting this here to stop SO ruining syntax highlighting :D) <body> <end if> (ie conditional comment)
If you do not understand why, read the paragraph beginning with "Conditional comments for IE ...".
The same block for any other browser looks like this:
<!--[if (gt IE 9)|!(IE)]><!--> (this is just one comment, containing the text "[if (gt IE 9)|!(IE)]><!") <body> <!--<![endif]--> (again, just one comment, containing "<![endif]")
source share