XSL:计算当前节点和另一个特定节点之间的级别
XSL: Count levels between current node and another specific node
我有以下 XML 结构:
<someSubNodeInXmlFile text="mainListStart">
<a text="text1">
<b text="text2">
<a text="text3">
<c text=""text4/>
</a>
<a text="text5"/>
</b>
</a>
<a text="text6">
<c text="text7"/>
</a>
</someSubNodeInXmlFile>
我的问题是关于编号的。
上面的XML可以看作是一个嵌套列表
编号的默认格式为“1.1.1”,级别="multiple"。
但如果列表嵌套第 4 次或更多次,则格式应更改为 '1',level="single".
上述结构的期望输出为:
1. mainListStart
1.1 text1
1.1.1 text2
1 text3
1 text4
2 text5
1.2 text6
1.2.1 text7
在我看来,例如如果我的当前节点是第一个节点,我需要计算当前节点和父节点之间有多少祖先。
如果计算出的数字小于 4,则使用 '1.1.1' 作为列表项格式,否则使用 '1' 作为格式。
我现在尝试了几种方法,但其中 none 有效。我能够计算出当前节点一般有多少个祖先,但这是在计算完整的祖先树,直到特定节点 'someSubNodeInXmlFile'.
这是否可以通过简单的 xpath 表达式来实现,或者我是否尝试使用从 current() 开始的递归模板来计算数字,如果需要,则查找每个下一个祖先,如果不是,则将数字加 1 和继续下一个祖先?
我可以想象后一个想法不是很有效(如果它有效的话)。但最好的解决方案是什么?
提前致谢。
BRgrds,
詹斯
如果你知道获取一个节点的所有祖先的数量,那么只需减去 someSubNodeInXmlFile
的祖先的数量,你就会得到中间节点的数量(加一)。
R---o---o---X---o---o---o---o---o---N
3 9
\_______________________/
9 - 3 - 1 = 5
我有以下 XML 结构:
<someSubNodeInXmlFile text="mainListStart">
<a text="text1">
<b text="text2">
<a text="text3">
<c text=""text4/>
</a>
<a text="text5"/>
</b>
</a>
<a text="text6">
<c text="text7"/>
</a>
</someSubNodeInXmlFile>
我的问题是关于编号的。 上面的XML可以看作是一个嵌套列表
编号的默认格式为“1.1.1”,级别="multiple"。 但如果列表嵌套第 4 次或更多次,则格式应更改为 '1',level="single".
上述结构的期望输出为:
1. mainListStart
1.1 text1
1.1.1 text2
1 text3
1 text4
2 text5
1.2 text6
1.2.1 text7
在我看来,例如如果我的当前节点是第一个节点,我需要计算当前节点和父节点之间有多少祖先。 如果计算出的数字小于 4,则使用 '1.1.1' 作为列表项格式,否则使用 '1' 作为格式。
我现在尝试了几种方法,但其中 none 有效。我能够计算出当前节点一般有多少个祖先,但这是在计算完整的祖先树,直到特定节点 'someSubNodeInXmlFile'.
这是否可以通过简单的 xpath 表达式来实现,或者我是否尝试使用从 current() 开始的递归模板来计算数字,如果需要,则查找每个下一个祖先,如果不是,则将数字加 1 和继续下一个祖先?
我可以想象后一个想法不是很有效(如果它有效的话)。但最好的解决方案是什么?
提前致谢。
BRgrds, 詹斯
如果你知道获取一个节点的所有祖先的数量,那么只需减去 someSubNodeInXmlFile
的祖先的数量,你就会得到中间节点的数量(加一)。
R---o---o---X---o---o---o---o---o---N
3 9
\_______________________/
9 - 3 - 1 = 5