Interpreting 
 to mean carriage return is performed by the XML parser, but the arguments to xmlstarlet's sel and ed subcommands are just plain strings, not XML. If you want a newline pass a newline:
# in bash
$'translate(comment, "\n", " ")'
# in powershell.exe
"translate(comment, '`n', ' ')"
:: in cmd.exe
"translate(comment, '"^
"', ' ')"
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Tested version:
xmlstarlet --version
1.3.1
compiled against libxml2 2.7.8, linked with 20708
compiled against libxslt 1.1.26, linked with 10126
Interpreting 
 to mean carriage return is performed by the XML parser, but the arguments to xmlstarlet's sel and ed subcommands are just plain strings, not XML. If you want a newline pass a newline:
# in bash
$'translate(comment, "\n", " ")'
# in powershell.exe
"translate(comment, '`n', ' ')"
:: in cmd.exe
"translate(comment, '"^
"', ' ')"