Набор утилит HTML-XML от W3C: обзор и практические примеры
Коротко о наборе
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 — перенаправьте его в файл, если нужно сохранить результат.

Вы также можете применять команду к URL:
hxnormalize http://www.example.comСписок ссылок: hxwls
Команда hxwls извлекает и перечисляет ссылки из локального файла или веб‑страницы. Это удобно для проверки ссылок и создания списков URL для парсинга.
hxwls http://www.example.comНиже пример вывода 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 часто быстрее и проще.
Мини‑методология: как выбрать утилиту для задачи
- Определите цель: нормализация, извлечение, подсчёт, транспонирование, работа со ссылками.
- Найдите инструмент в списке (hxnormalize, hxselect, hxcount, hxtabletrans, hxwls и т.д.).
- Запустите на отдельной копии и проверьте вывод.
- Автоматизируйте через скрипт/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 — эти утилиты охватывают большую часть повседневных задач.
Важно: тестируйте на копиях файлов и интегрируйте в автоматические сценарии с логированием и контрольными точками.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента