Когда вы включаете нумерацию строк в Saxon, она сохраняет номера строк, сообщаемые анализатором XML.В случае синтаксического анализатора SAX номер строки, сообщаемый для каждого события SAX, представляет позицию в исходном файле конца конструкции, дающей начало этому событию.Атрибуты сообщаются как часть события startElement (), поэтому лучшее, что мы можем сделать, это сообщить о положении символа «>», появляющегося в конце начального тега.
Это фактически не имеет ничего общегос нормализацией значений атрибутов, которая представляет собой процесс, применяемый к значениям атрибутов анализатором XML, в результате чего символы новой строки и табуляции заменяются пробелами(Единственное, что объединяет эти две проблемы, это то, что в обоих случаях синтаксический анализатор XML следует правилам, и Саксон не может сказать, что делать иначе).
Если вы действительно хотите решить эту проблемувам, вероятно, придется сделать что-то похожее на то, что делает oXygen (я полагаю): он принимает номер строки и столбца, сообщаемый Saxon для конца начального тега, а затем считывает оттуда в исходном файле, чтобы найти, где находитсярелевантным атрибутом является то, что он может «пометить» атрибут-нарушитель, показав его подчеркнутым.
В качестве альтернативы возможно, что (имеется в виду, возможно, стоило бы выяснить, имеется ли) более точная информация о местоположении изпарсер Stax, такой как Woodstox или Aalto, где каждый атрибут уведомляется как отдельное событие.Если это так, то, хотя Saxon не может записать информацию о местоположении на уровне атрибутов, вы можете передать ее другим способом, например, с помощью пользовательского NodeFactory со связанной моделью дерева, чтобы поместить информацию в подклассстандартное представление ElementImpl элементов.