March 2026
Intermediate
600 pages
10h
Japanese
これまで、私たちのブラウザはWebページを、開始タグ、終了タグ、そしてテキストのストリーム(逐次的に解釈するデータ)として認識していました。しかしHTMLは実際にはツリー構造です。そして、ツリー構造はこれまで重要ではありませんでしたが、CSS、JavaScript、視覚効果といった将来実装する機能において重要になるでしょう。そのためこの章では、適切なHTMLパーサーを追加し、レイアウトエンジンがそれを使用するように変換します。
HTMLツリー※1は、開始タグと終了タグの各ペアに対して1つのノードと、テキストの各範囲に対して1つのノードを持ちます※2。構造を示す単純なHTMLドキュメントを、図4.1に示します。
※1 これは通常DOM(Document Object Model[1])ツリーと呼ばれるツリーです。ここでは当面、HTMLツリーと呼ぶことにします。
※2 実際には、コメント、DOCTYPE、CDATAセクション、処理命令など、他の種類のノードも存在します。他の種類のノードには非推奨なものもいくつか存在します。
私たちのブラウザがツリーを使用するためには、トークンをノードに進化させる必要があります。これは、各ノードに子のリストと親へのポインタを追加することを意味します。ツリーの末端のテキストを表す、新しいTextクラスを以下に示します。
class Text: def __init__(self, text, parent): self.text = text self.children = [] self.parent = parent
1つのノードを作るには2つのタグ(開始タグと終了タグ)が必要なので、 ...
Read now
Unlock full access