ローカルでHTML自動生成したくなったのでとりあえずxml.domパッケージを試しに使ってみる。
domtest.py
# -*- coding: cp932 -*- from xml.dom import XHTML_NAMESPACE from xml.dom.minidom import DocumentType, getDOMImplementation dom = getDOMImplementation() doctype = DocumentType('html') doctype.publicId = "-//W3C//DTD XHTML 1.0 Strict//EN" doctype.systemId = "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" doc = dom.createDocument(XHTML_NAMESPACE, 'html', doctype) html = doc.documentElement html.setAttribute("xmlns",XHTML_NAMESPACE) html.setAttribute("lang","ja") html.setAttribute("xml:lang","ja") head = doc.createElement("head") html.appendChild(head) title = doc.createElement("title") head.appendChild(title) title_t = doc.createTextNode("DOM de XHTML") title.appendChild(title_t) body = doc.createElement("body") html.appendChild(body) h1 = doc.createElement("h1") body.appendChild(h1) h1_t = doc.createTextNode("ほげ Sample") h1.appendChild(h1_t) p = doc.createElement("p") body.appendChild(p) p_t = doc.createTextNode("Python HTMLGenerator") p.appendChild(p_t) print doc.toprettyxml(" ", "\n","UTF-8")
実行結果
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'> <html xml:lang="ja" xmlns="http://www.w3.org/1999/xhtml"> <head> <title> DOM de XHTML </title> </head> <body> <h1> ほげ Sample </h1> <p> Python HTMLGenerator </p> </body> </html> <|| 疑問点など -DOCTYPEの識別子を囲むのはシングルコーテーションでもいいんだっけ?ライブラリ(minidom.py)のソースコード見たらシングルかダブルか選べるようになってないようでしたorz -html要素にlang属性とxml:lang属性を適用しようとしたら先に適用した方が消えた