结点变量
结点变量体现了树形结构中的结点。结点变量的引入是为了帮助用户 在数据模型中处理XML文档, 但是它们也可以用于构建树状模型。如需要有关从模板语言角度考虑的结点信息, 那么可以 阅读之前章节。
结点变量有下列属性,它们都由
TemplateNodeModel
接口的方法提供:
-
基本属性:
-
TemplateSequenceModel getChildNodes()
: 一个结点的子结点序列(除非这个结点是叶子结点,这时方法返回一个空序列或者是null)。 子结点本身应该也是结点变量。 -
TemplateNodeModel getParentNode()
: 一个结点只有一个父结点(除非这个结点是结点树的根结点, 这时方法返回null
)。
-
-
可选属性。如果一个属性在具体的使用中没有意义, 那对应的方法应该返回
null
:-
String getNodeName()
: 结点名称也是宏的名称,当使用recurse
和visit
指令时, 它用来控制结点。因此,如果想通过结点使用这些指令, 那么结点的名称是 必须的。 -
String getNodeType()
:在XML中:"element"
,"text"
,"comment"
等。如果这些信息可用, 就是通过recurse
和visit
指令来查找结点的默认处理宏。而且,它对其他有具体用途的应用程序也是有用的。 -
String getNamespaceURI()
: 这个结点所属的命名空间(和用于库的FTL命名空间无关)。例如,在XML中, 这就是元素和属性所属XML命名空间的URI。这个信息如果可用,就是通过recurse
和visit
指令来查找存储控制宏的FTL命名空间。
-
在FTL里,结点属性的直接使用可以通过 内建函数 node完成,
还有 visit
和 recurse
宏。
在很多用例中,实现了 TemplateNodeModel
接口和其它接口的变量,因为结点变量属性仅仅提供基本的结点间导航的方法。
需要具体的例子,请参考 FreeMarker如何处理XML 部分。