Node variables

节点变量以树结构体现节点。引入了节点变量以帮助数据模型中 XML 文档的处理,但是它们也可以用于其他树结构的建模。从模板语言阅读本节的角度获取有关节点的更多信息。

TemplateNodeModel接口的方法提供的节点变量具有以下属性:

  • Basic properties:

  • TemplateSequenceModel getChildNodes():一个节点具有子序列(除非该节点是叶节点,在这种情况下该方法返回一个空序列或 null)。子节点也应该是节点变量。

    • TemplateNodeModel getParentNode():一个节点正好有 1 个父节点,除非该节点是树的根节点,在这种情况下,该方法将返回null
  • 可选属性。如果属性在具体用例中没有意义,则相应的方法应返回null

  • String getNodeName():节点名称是宏的名称,当您使用recursevisit指令时,该宏将处理该节点。因此,如果要在节点上使用这些指令,则节点名称为* required *。

    • String getNodeType():对于 XML:"element""text""comment",...等。 recursevisit指令使用此信息(如果可用)来查找节点的默认处理程序宏。它对于其他特定于应用的目的也可能有用。

    • String getNamespaceURI():该节点所属的节点名称空间(与用于库的 FTL 名称空间无关)。例如,对于 XML,这是元素或属性所属的 XML 名称空间的 URI。 recursevisit指令使用此信息(如果可用)来查找存储处理程序宏的 FTL 名称空间。

在 FTL 方面,节点属性的直接利用是通过node built-ins以及visitrecurse宏完成的。

在大多数使用情况下,实现TemplateNodeModel的变量也实现其他接口,因为节点变量属性仅提供了在节点之间导航的基本基础结构。有关具体示例,请参见FreeMarker 如何处理 XML