Если посмотреть на страницу Википедии для ссылок на сущности XML и HTML , ссылки на сущности, следующие за шаблоном &#nnnn;
, представляют собой кодовые точки Unicode в десятичной форме, что означает, что 
будет эквивалентно Unicode U + 0004 : END OF TRANSMISSION
, что является непечатаемым символом.
Так что я думаю, что синтаксический анализатор прав в этом случае, чтобы потерпеть неудачу.
На самом деле, если вы посмотрите на источник com.sun.org.apache.xerces.internal.impl.XMLScanner#scanCharReferenceValue
, вы увидите, что он ссылается на com.sun.org.apache.xerces.internal.util.XMLChar#isValid
здесь:
/**
* Returns true if the specified character is valid. This method
* also checks the surrogate character range from 0x10000 to 0x10FFFF.
* <p>
* If the program chooses to apply the mask directly to the
* <code>CHARS</code> array, then they are responsible for checking
* the surrogate character range.
*
* @param c The character to check.
*/
public static boolean isValid(int c) {
return (c < 0x10000 && (CHARS[c] & MASK_VALID) != 0) ||
(0x10000 <= c && c <= 0x10FFFF);
} // isValid(int):boolean