Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

validじゃないHTML、XHTMLをなんとかする方法

試してみようみようと思っててなかなか試せなかったけど機会ができた。
lxmlを知らないとモグリです。

とりあえず見習いであればXMLParser走らせてチェックでもいいんだけど。(練習になるので)
仕事だとめんどいのでvalidにしちゃう。

lxmlでできるはずだなあと思って試しただけ。

# vim: fileencoding=utf8

from lxml import etree
import os
import sys

def format(input):
    parser = etree.HTMLParser()
    et = etree.parse(input, parser)
    base = os.path.basename(input)
    base = '_' + base
    dirname = os.path.dirname(input)
    out = os.path.join(dirname, base)
    writer = open(out, 'w')
    writer.write(etree.tostring(et.getroot(), 'utf-8', pretty_print = True))
    writer.close()

if __name__ == '__main__':
    format(sys.argv[1])

lxmlでやるだけですよと。
閉じタグだけでなく、属性を囲ってない、属性名が妙にcamelcaseとかも直してくれる。
(属性名は小文字にしちゃうだけだけど)
XHTMLがテンプレートなフレームワークTeedaやNevowで開発する時に重宝します。
僕の場合、できあがったHTMLを最後にEclipseWTPのHTMLEditorで整形して使ってます。
マークアップエンジニアの人もドンドン使って行こうぜ!

うくく。