where w, x, y and z are supplementary characters, I find (using saxonhe9-3)
that it works if the supplementary characters are indicated with the hex-escape
&#xHHHHHHHH; notation, but _not_ if the supplementary characters are simply typed in
using a Unicode-savvy text editor that handles supplementary characters.

For the record, this conversation continued off-list and we established
that the problem was solved by using the Apache Xerces XML parser in
place of the default parser in the JDK. Yet again - please don't use the
JDK parser: it's full of bugs, and I don't think Oracle are any more
likely to fix them than Sun were.