Node variables
节点变量以树结构体现节点。引入了节点变量以帮助数据模型中 XML 文档的处理,但是它们也可以用于其他树结构的建模。从模板语言阅读本节的角度获取有关节点的更多信息。
TemplateNodeModel
接口的方法提供的节点变量具有以下属性:
-
Basic properties:
-
TemplateSequenceModel getChildNodes()
:一个节点具有子序列(除非该节点是叶节点,在这种情况下该方法返回一个空序列或 null)。子节点也应该是节点变量。TemplateNodeModel getParentNode()
:一个节点正好有 1 个父节点,除非该节点是树的根节点,在这种情况下,该方法将返回null
。
-
可选属性。如果属性在具体用例中没有意义,则相应的方法应返回
null
: -
String getNodeName()
:节点名称是宏的名称,当您使用recurse和visit指令时,该宏将处理该节点。因此,如果要在节点上使用这些指令,则节点名称为* required *。-
String getNodeType()
:对于 XML:"element"
,"text"
,"comment"
,...等。recurse
和visit
指令使用此信息(如果可用)来查找节点的默认处理程序宏。它对于其他特定于应用的目的也可能有用。 -
String getNamespaceURI()
:该节点所属的节点名称空间(与用于库的 FTL 名称空间无关)。例如,对于 XML,这是元素或属性所属的 XML 名称空间的 URI。recurse
和visit
指令使用此信息(如果可用)来查找存储处理程序宏的 FTL 名称空间。
-
在 FTL 方面,节点属性的直接利用是通过node built-ins以及visit
和recurse
宏完成的。
在大多数使用情况下,实现TemplateNodeModel
的变量也实现其他接口,因为节点变量属性仅提供了在节点之间导航的基本基础结构。有关具体示例,请参见FreeMarker 如何处理 XML。