Next: , Previous: , Up: テキスト   [Contents][Index]


33.30 HTMLとXMLの解析

ビルトインのlibxml2サポートつきでEmacsをコンパイルできます。

Function: libxml-available-p

この関数はビルトインlibxml2サポートが利用可能なら非nilをリターンする。

libxml2サポートが利用可能なら、HTMLやXMLのテキストをLispオブジェクトツリーにパースするために以下の関数を利用できます。

Function: libxml-parse-html-region &optional start end base-url discard-comments

この関数はstartendの間のテキストをHTMLとしてパースして、HTMLパースツリー(parse tree)を表すリストをリターンする。これは構文誤りにたいして強力に対処することにより、現実世界のHTMLの処理を試みる。

startまたはendnilの場合のデフォルト値は、それぞれpoint-minpoint-maxになる。

オプション引数base-urlが非nilなら、それはlibxml2がレポートする警告とエラーに使用されるべきだが、現在のところEmacsはエラーと警告を無効にしてこのライブラリーを呼び出すのでこの引数は使用されていない。

オプション引数discard-commentsが非nilなら、すべてのトップレベルのコメントを破棄する(この引数は時代遅れでありEmacsの将来のバージョンで削除されるだろう。コメントの削除にはパース関数の呼び出し前にデータにユーティリティ関数xml-remove-commentsを使用すること)。

パースツリー内では各HTMLノードは1つ目の要素がノード名を表すシンボル、2つ目の要素がノード属性のalist、残りの要素はサブノードであるようなリストにより表される。

以下の例でこれを示す。以下の(不正な)HTMLドキュメントを与えると:

<html><head></head><body width=101><div class=thing>Foo<div>Yes

libxml-parse-html-region呼び出しにより以下のDOM (document object model)がリターンされる:

(html nil
 (head nil)
 (body ((width . "101"))
  (div ((class . "thing"))
   "Foo"
   (div nil
    "Yes"))))
Function: shr-insert-document dom

この関数はdom内のパース済みHTMLをカレントバッファー内に描画する。引数domlibxml-parse-html-regionで生成されるようなリストであること。この関数はたとえばEWW in The Emacs Web Wowser Manualにより使用される。

Function: libxml-parse-xml-region &optional start end base-url discard-comments

この関数はlibxml-parse-html-regionと同様だが、HTMLではなくXML(構文についてより厳格)としてテキストをパースする点が異なる。