Thanks, Jonathan, for the code snippet.
replace value of node $ketiv/@type with fn:string-join(($ketiv/@type, "x-ketiv"), " ")
This statement should be completely safe, no matter which options you have set. If you want to avoid if/then/else, you can also do the following (but it’s not much shorter):
delete node $ketiv/@type, insert node attribute type { string-join(($ketiv/@type, "x-ketiv"), " ") } into $ketiv