如果我有像这样的xml结构
<root> <sub> <node /> <node /> </sub> <sub> <node /> <sub> <sub> <sub> <node /> </sub> </sub> <sub> <sub> <sub> <node /> </sub> <node /> </sub> </sub> <node /> <node /> </root>
是否有一个xpath语法只能选择前三个节点级别?
所以它会收集
<root> <sub> <node /> <node /> </sub> <sub /> <sub> <sub /> </sub> <sub> <sub /> </sub> <node /> <node /> </root>
更新
为了解释我在做什么,我有一个asp:treeview,我绑定到一个asp:xmldatasource,我希望树视图只能深入三个节点。有可能在treeview或xmldatasource控件上以另一种方式执行它,但xpath似乎是最明显的
谢谢,Psy
答案 0 :(得分:6)
您可以检查祖先轴数,实际上是深度:
//*[count(ancestor::*)<3]
答案 1 :(得分:1)
您可以添加一个规则,该规则可以匹配某个级别以下“无效”的所有内容:
<xsl:template match="/*/*/*/*"/>
这是一个完整的例子:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*/*/*/*"/>
</xsl:stylesheet>