Javascript string literals in HTML are subject to significant restrictions particularly due to the potential for unquoted attributes and any uncertainty as to whether Javascript will be viewed as being CDATA or PCDATA by the browser.
Diese »uncertainty« gibt es nicht, solange man HTML 4 oder HTML 5 schreibt. In HTML 4 ist script CDATA und in HTML 5 ist es ähnlich definiert.
Es lässt sich nur schwer Code schreiben, der in HTML und XML sicher ist, weil eben die Parsing-Regeln anders sind. Ich würde es gar nicht erst versuchen.
Problematisch ist eher, dass nicht alle existierenden Browser die neuen HTML5-Parsingregeln umsetzen, man also mit vielen weiteren Interpretationen rechnen muss. Insbesondere ältere IEs sind hier betroffen. Da jeder aktuelle IE per Meta-Tag in den Kompatibilitätsmodus versetzt werden kann und damit die Fehler eines beliebigen alten IEs simuliert, ist selbst jeder IE 11 entsprechend angreifbar.
Zu XSS generell empfehle ich die Paper und Präsentationen von Mario Heiderich:
https://cure53.de/#publications
Mathias