Гид по технологиям

Набор утилит HTML-XML от W3C: обзор и практические примеры

• 6 min read • Инструменты • Обновлено 21 Nov 2025
HTML-XML-utils: обзор и примеры
HTML-XML-utils: обзор и примеры

Коротко о наборе

HTML-XML-utils — коллекция небольших программ, каждая из которых решает одну конкретную задачу при работе с HTML или XML. Всего в пакете 31 инструмент. Они доступны в репозиториях основных Linux‑дистрибутивов и подходят для сценариев, где нужно быстро обработать множество файлов или парсить HTML/XML без тяжёлого браузерного стека.

Важно: эти утилиты — текстовые. Ожидайте, что они работают с синтаксическими структурами и сущностями, а не с рендерингом стилей или JS.

Установка

На Debian/Ubuntu установка выполняется так:

sudo apt-get install html-xml-utils

Для других дистрибутивов используйте соответствующий пакетный менеджер (dnf, pacman, zypper) или соберите из исходников, если нужен специфичный релиз.

Примечание: в пакетах может меняться набор инструментов и версии. Проверяйте список установленной версии через менеджер пакетов.

Краткий перечень утилит и их назначение

  • cexport — создать заголовочный файл с экспортируемыми объявлениями из C‑файла
  • hxaddid — добавить ID выбранным элементам
  • hxcite — заменить библиографические ссылки гиперссылками
  • hxcite-mkbib — расширить ссылки и создать библиографию
  • hxcopy — копировать HTML, сохраняя относительные ссылки
  • hxcount — подсчитать элементы и атрибуты в HTML/XML
  • hxextract — извлечь выбранные элементы
  • hxclean — применить эвристики для исправления HTML
  • hxprune — удалить помеченные элементы из HTML
  • hxincl — развернуть включённые HTML/XML файлы
  • hxindex — создать алфавитный индекс
  • hxmkbib — создать библиографию из шаблона
  • hxmultitoc — создать оглавление для набора HTML‑файлов
  • hxname2id — перенести ID или NAME из A в родительские элементы
  • hxnormalize — красиво отформатировать HTML
  • hxnum — пронумеровать заголовки секций
  • hxpipe — преобразовать XML в формат удобный для парсинга awk/perl
  • hxprintlinks — пронумеровать ссылки и добавить таблицу URL в конец
  • hxremove — удалить выбранные элементы из XML
  • hxtabletrans — транспонировать HTML/XHTML‑таблицу
  • hxtoc — вставить оглавление в HTML
  • hxuncdata — заменить CDATA на символьные сущности
  • hxunent — заменить предопределённые HTML‑сущности на UTF‑8
  • hxunpipe — восстановить XML из вывода pipe
  • hxunxmlns — заменить «глобальные имена» на префиксы пространств имён
  • hxwls — перечислить ссылки в HTML
  • hxxmlns — заменить префиксы XML Namespace на «глобальные имена»
  • asc2xml, xml2asc — конвертировать между UTF‑8 и сущностями
  • hxref — сгенерировать перекрёстные ссылки
  • hxselect — извлечь элементы по CSS‑селектору

Факт: в пакете 31 инструмент. Этот набор покрывает типичные операции предобработки и анализа HTML/XML для скриптов и CI‑задач.

Примеры использования

Ниже приведены практические примеры, которые познакомят с наиболее полезными командами.

Нормализация HTML: hxnormalize

Команда hxnormalize форматирует HTML так, чтобы код было легко читать. Она умеет вставлять недостающие закрывающие теги и выравнивать вложенность.

Создадим пример «уродливого» HTML прямо в терминале:

cat > test.html <<'__EOF__'

hello __EOF__

Файл test.html содержит незакрытые теги и всё в одной строке. Запускаем нормализацию:

hxnormalize -e test.html

Флаг -e говорит утилите вставить недостающие закрывающие теги. Вывод идёт в stdout — перенаправьте его в файл, если нужно сохранить результат.

Выход hxnormalize — отформатированный HTML

Вы также можете применять команду к URL:

hxnormalize http://www.example.com

Список ссылок: hxwls

Команда hxwls извлекает и перечисляет ссылки из локального файла или веб‑страницы. Это удобно для проверки ссылок и создания списков URL для парсинга.

hxwls http://www.example.com

Ниже пример вывода hxwls для сайта Make Tech Easier (первые строки):

Вывод hxwls — список ссылок с сайта Make Tech Easier

Транспонирование таблицы: hxtabletrans

hxtabletrans изменяет таблицу так, что строки становятся столбцами и наоборот. Это особенно полезно при подготовке данных для CSV/таблиц или визуализации.

Создадим простой HTML‑файл с таблицей (пример для терминала):

cat > table.html <<'__EOF__'

Jill
Smith
50


Eve
Jackson
94

__EOF__

Выполним транспонирование и сохраним результат в новый файл:

hxtabletrans table.html > table2.html

Теперь table2.html покажет имена и данные в столбцах вместо строк.

Прочие сценарии

  • hxextract + hxselect — извлечь элементы по CSS‑селектору и сохранить их в отдельный файл.
  • hxclean — быстро «почистить» сломанный HTML, чтобы парсер не падал.
  • hxprintlinks — пронумеровать ссылки и добавить таблицу URL в конец документа для удобства ручной проверки.
  • hxpipe/hxunpipe — преобразовать XML в строковый формат, удобный для awk/perl, и обратно.

Продвинутые советы и лучшие практики

  • Всегда тестируйте команды на копиях файлов. Большинство утилит пишет в stdout по умолчанию; перенаправляйте в новый файл.
  • При пакетной обработке используйте find + xargs или цикл for. Например:
find ./html -name '*.html' -print0 | xargs -0 -I{} hxnormalize -e {} '>' {}.clean
  • Для сложных извлечений сочетайте hxselect с hxextract: сначала выберите нужные узлы CSS‑селектором, потом извлеките их содержимое.
  • Если нужно корректно работать с кодировками, пользуйтесь asc2xml/xml2asc и hxunent.

Когда эти утилиты могут не подойти

  • Полноценный рендеринг страницы с JS — сюда не входит. Утилиты оперируют исходным HTML, а не DOM после выполнения скриптов.
  • Если требуется точный валидатор по спецификации последней версии HTML5, рассмотрите специализированные валидаторы или браузерные движки.
  • Для очень больших файлов скорость работы может быть ниже, чем у оптимизированных парсеров на C/C++ — тестируйте производительность.

Альтернативы и дополнения

  • tidy — исправляет и форматирует HTML; хорошо справляется с базовой нормализацией.
  • xmllint (libxml2) — мощный инструмент для XML; полезен при строгой валидации и XPath.
  • pup / htmlq — утилиты для извлечения данных по селекторам (аналог jq для HTML).

Выбор зависит от задачи: для простых манипуляций в скриптах HTML-XML-utils часто быстрее и проще.

Мини‑методология: как выбрать утилиту для задачи

  1. Определите цель: нормализация, извлечение, подсчёт, транспонирование, работа со ссылками.
  2. Найдите инструмент в списке (hxnormalize, hxselect, hxcount, hxtabletrans, hxwls и т.д.).
  3. Запустите на отдельной копии и проверьте вывод.
  4. Автоматизируйте через скрипт/CI с обработкой ошибок и логами.

Роль‑ориентированные чек‑листы

Для разработчика:

  • Установить пакет и проверить список инструментов.
  • Протестировать утилиту на простом примере.
  • Добавить в скрипт с обработкой ошибок.

Для контент‑редактора:

  • Использовать hxnormalize перед публикацией.
  • Проверять ссылки через hxwls/hxprintlinks.

Для DevOps/CI:

  • Интегрировать проверки в пайплайн.
  • Логи и артефакты сохранять как артефакты сборки.

Примеры тест‑кейсов / критерии приёмки

  • hxnormalize: входной HTML с отсутствующими закрывающими тегами должен возвращать корректно вложенную структуру.
  • hxwls: для страницы с N ссылками команда должна вернуть N строк, каждая — отдельный URL.
  • hxtabletrans: таблица M×N должна стать N×M без потери данных.

FAQ

Как быстро получить список всех доступных утилит после установки?

Выполните ls /usr/bin | grep hx или проверьте документацию пакета: man html-xml-utils или man hxnormalize.

Можно ли использовать эти инструменты в Windows?

Нативно нет, но они работают в WSL или через Cygwin/MSYS2 на Windows.

Как обрабатывать JavaScript‑генерируемый контент?

Эти утилиты не выполняют JS. Для такого контента используйте headless‑браузер (Puppeteer, Playwright) и затем обрабатывайте статический HTML полученным набором.

Заключение

HTML-XML-utils — компактный и практичный набор инструментов для быстрой обработки HTML и XML из командной строки. Он не заменит полноценный браузер или мощный парсер, но станет незаменимым помощником для автоматизации, предобработки и анализа. Начните с hxnormalize, hxselect, hxwls и hxtabletrans — эти утилиты охватывают большую часть повседневных задач.

Важно: тестируйте на копиях файлов и интегрируйте в автоматические сценарии с логированием и контрольными точками.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро