2012-02-08 2 views
3

나는 모두 함께 짓 눌린 html을 출력하고 있는데, 적절한 들여 쓰기가되도록 변환하려고합니다. 나는 이것을 위해 xmllint를 사용하려했지만 기쁨은 없었다. 예 : 이 file.html과에있을 때 :xmllint로 html을 들여 쓰려면?

$ 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과 혼자 그 라인 중 하나를 포함하는 경우, 그것은 (두 번째 줄을 제거) 잘 작동 :

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

를 내가 얻을

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

내가 --html 옵션을 포함하면 오류없이 실행될 가능성이 커지지 만 들여 쓰지는 않습니다.

제안 사항? 거기에 내가 사용할 수있는 다른 (* nix) 도구가 있습니까? 감사합니다 ...

답변

2

내가 생각하기에 이것은 제공된 HTML에 루트 태그가 없어서 잘못된 XML로 만들기 때문입니다.

body 태그를 추가하고 xmllint를 다시 실행 해보십시오.

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

을 사용해 보셨습니까? 이에 대한 자세한 내용은 W3 & sourceforge에서 사용할 수 있습니다. 여기에 GuiTidy으로 알려진 GUI 도구도 사용할 수 있습니다. 이 도구는 훌륭하고, 들여 쓰기를 돕는 것은 물론 HTML 코드의 유효성을 검사합니다.

희망이 도움

4

사용자 4M01 제안과 같이 명령 줄에서 깔끔한 HTML로 호출하여 파이프를 추가합니다.

HTML 출력 xmllint이 수리됩니다. 깔끔한 귀하의 HTML 조각 주위에 몇 가지 합리적인 것입니다 포장됩니다.

xmllint --xpath "//tr[6]/td[7]" --html - | tidy -q 
2

tidy -i은 설정 값을 indent: auto으로 설정합니다. 자동이 아닌 yes으로 설정하면 더 들여 쓰기 스타일이 꾸준히 향상됩니다.

tidy --indent yes