我想计算某个节点的所有后代或自身节点,但只是所有后代都低于从0开始的某个级别。你有什么建议吗?
基本上看起来像是:
count(//fstructure/node()) + count(//fstructure/node()/node()) + count(//fstructure/node()/node()/node()) + 1
适用于3个级别和(元素)节点“fstructure”,即使它不是很好,但我只需要它进行调试。
最好的问候,
约翰内斯
答案 0 :(得分:2)
此XPath表达式:
count(
ExprForYourNode//*
[not(count(ancestor::* )
>
count(ExprForYourNode/ancestor::*) + 2
)
]
)
从表达式ExprForYourNode
选择的元素中选择所有后代或自我元素,最大深度为2(基于零)
如果要选择所有后代或自节点(元素,文本节点,注释节点和处理指令节点),请使用:
count(
ExprForYourNode//node()
[not(count(ancestor::* )
>
count(ExprForYourNode/ancestor::*) + 2
)
]
)
例如,使用此文档:
<t>
<a>
<b>
<c>
<d/>
</c>
</b>
</a>
</t>
此表达:
count(
/*/a//*
[not(count(ancestor::* )
>
count(/*/a/ancestor::*) + 2
)
]
)
<强>产生强>:
2
这是(b
和c
但不是d
)的元素数量,它们是a
的后代,相对深度为a
2或以下。
同样,评估此表达式:
count(
/*/a//node()
[not(count(ancestor::* )
>
count(/*/a/ancestor::*) + 2
)
]
)
<强>产生强>:
6
这是元素的数量(如前所述)加上相对于元素a
的深度为2的(仅限空白)文本节点的数量