DOM 树

我们将使用此 XML 文档作为示例:

<book>
  <title>Test Book</title>
  <chapter>
    <title>Ch1</title>
    <para>p1.1</para>
    <para>p1.2</para>
    <para>p1.3</para>
  </chapter>
  <chapter>
    <title>Ch2</title>
    <para>p2.1</para>
    <para>p2.2</para>
  </chapter>
</book>

W3C DOM 将 XML 文档建模为节点树。上面 XML 的节点树可以可视化为:

document
 |
 +- element book
     |
     +- text "\n  "
     |
     +- element title
     |   |
     |   +- text "Test Book"
     |
     +- text "\n  "
     |
     +- element chapter
     |   |
     |   +- text "\n    "
     |   |
     |   +- element title
     |   |   |
     |   |   +- text "Ch1"
     |   |
     |   +- text "\n    "
     |   |
     |   +- element para
     |   |   |
     |   |   +- text "p1.1"
     |   |
     |   +- text "\n    "
     |   |
     |   +- element para
     |   |   |
     |   |   +- text "p1.2"
     |   |
     |   +- text "\n    "
     |   |
     |   +- element para
     |      |
     |      +- text "p1.3"
     |
     +- element
         |
         +- text "\n    "
         |
         +- element title
         |   |
         |   +- text "Ch2"
         |
         +- text "\n    "
         |
         +- element para
         |   |
         |   +- text "p2.1"
         |
         +- text "\n    "
         |
         +- element para
             |
             +- text "p2.2"

请注意,令人不安的"\n " -s 是换行符(此处用\n表示,FTL 字符串 Literals 中使用的转义序列)和标记之间的缩进空间。

有关 DOM 相关术语的 Comments:

程序员将 DOM 树的文档节点放入 FreeMarker 数据模型中,然后模板作者可以使用该变量作为起点遍历 DOM 树。

FTL 中的 DOM 节点对应于 节点变量 。这是一种变量类型,类似于字符串,数字,哈希等类型。节点变量类型使 FreeMarker 可以获取节点的父节点和子节点。从技术上讲,这是允许模板作者在节点之间导航(例如,使用node built-insvisitrecurse指令)所必需的。我们将在后续章节中展示这些用法。

上一章 首页 下一章