Вы можете сделать это, вроде как, настроив XmlReader, чьи XmlReaderSettings содержат схему, а затем используя ее для чтения входного потока узел за узлом. Вы можете отслеживать последний прочитанный узел и иметь довольно хорошее представление о том, где вы находитесь в документе, когда происходит ошибка проверки.
Я думаю, что если вы попробуете это упражнение, вы обнаружите, что существует много ошибок проверки (например, отсутствует обязательный элемент), где концепция узла ошибок не имеет большого смысла. Да, родительский элемент, очевидно, является причиной ошибки в этом случае, но что действительно вызвало ошибку, так это то, что читатель обнаружил конечный тег, даже не увидев требуемый элемент, поэтому линия ошибки и позиция указывают на конечный тег. *