Skip to main content

Ошибка XML · attribute

Незакрытая кавычка в значении атрибута

Значение атрибута открыто кавычкой, которая нигде не закрывается, поэтому парсер не находит конец тега и читает дальше, пока не упрётся в конец файла.

attributes construct error (line 1)

Что это значит

Парсер начал читать значение в кавычках и дошёл до конца тега, строки или документа, так и не встретив парной кавычки. libxml2 сообщает об этом обобщённо — «attributes construct error» — обычно вместе с более точным сообщением о теге, который не удалось завершить.

Позиция указывает на место, где парсер сдался, а не на открывающую кавычку. Искать нужно выше по документу.

Обычные причины

  • Пропущенная закрывающая кавычка при ручном редактировании атрибутов.
  • Кавычка внутри значения, не экранированная как ".
  • Смешение одинарных и двойных кавычек в одном значении.
  • Конкатенация строк, где кавычка попала в значение из данных.

Как исправить

  • Найдите последний тег с нечётным числом кавычек и закройте значение.
  • Экранируйте кавычки внутри значений: " для двойной и ' для одинарной.
  • Собирайте разметку сериализатором — он экранирует значения атрибутов по построению.

Та же ошибка в других парсерах

Разные парсеры, один и тот же дефект. Сообщения не переведены — вы искали именно их текст.

  • Xerces (Java)

    Open quote is expected for attribute "photo" associated with an element type "image:image".
  • libxml2 (companion message)

    AttValue: " or ' expected
  • expat (Python)

    not well-formed (invalid token): line 1, column 24

До и после

Оба фрагмента проверяются тестами на настоящем парсере: первый выдаёт в точности сообщение выше, второй разбирается без ошибок.

Ошибка
<image:image title='Tom's photo'/>
Разбирается
<image:image title="Tom&apos;s photo"/>