Как сделать отступ для HTML с помощью xmllint? - PullRequest
3 голосов
/ 08 февраля 2012

Я вывожу html, который все сжато вместе, и хотел бы преобразовать его, чтобы иметь правильный отступ. Я пытался использовать xmllint для этого, но без радости. Например. когда это в файле file.html:

<table><tr><td><b>Foo</b></td></tr></table>
<table><tr><td>Bar</td></tr></table>

Я получаю:

$ xmllint --format file.html
file.html:2: parser error : Extra content at the end of the document
<table><tr><td>Bar</td></tr></table>
^
<<< exit status [1] >>>

Но когда file.html содержит одну из этих строк, она работает нормально (удаляя вторую строку):

$ xmllint --format file.html
<?xml version="1.0"?>
<table>
  <tr>
    <td>
      <b>Foo</b>
    </td>
  </tr>
</table>

Когда я включаю параметр --html, он, скорее всего, будет работать без ошибок, но тогда он не будет отступать.

Есть предложения? Есть ли другие (* nix) инструменты, которые я могу использовать для этого? Спасибо ...

Ответы [ 4 ]

4 голосов
/ 03 января 2013

Как предложил пользователь 4M01: в командной строке добавьте канал с вызовом HTML tidy.

Вывод HTML из xmllint будет восстановлен;Tidy обернет некоторые разумные ... вокруг вашего фрагмента HTML.

2 голосов
/ 05 апреля 2013

tidy -i устанавливает значение конфигурации indent: auto. Если вместо auto я установил yes, у меня последовательно улучшился стиль отступа:

tidy --indent yes 
2 голосов
/ 13 февраля 2012

Я думаю, это потому, что в предоставленном вами HTML нет корневого тега, что делает его недопустимым XML.

Попробуйте добавить тег body и снова запустить xmllint.

<body><table><tr><td><b>Foo</b></td></tr></table>
<table><tr><td>Bar</td></tr></table></body>
1 голос
/ 14 февраля 2012

Вы пробовали HTML Tidy ?Более подробную информацию об этом можно получить по адресу W3 & sourceforge . Даже там доступен инструмент с графическим интерфейсом, который известен как GuiTidy .Эти инструменты хороши, они не только помогают в правильном отступе, но и проверяют HTML-код.

Надеюсь, эта помощь

...