Вы сделали всё правильно. Это редакторы косячат.
<div id="out"></div>
<script type="text/javascript">
var out = document.getElementById("out");
/* Этот текст экранирован правильно и покажется как ожидается */
out.innerHTML += "<p>Бла бла бла <? бла ?></p>";
/* Этот не экранирован и воспримется как XML Processing Instruction */
out.innerHTML += "<p>Бла бла бла <? бла ?></p>";
</script>