CSS的xPath等价物:nth-​​of-type(n)

时间:2018-01-29 12:15:24

标签: html xpath css-selectors

如何使用xPath选择其类型的第一个节点? 在CSS中我使用 a:nth-​​of-type(1)。预期结果是 b с first d 节点(text ='1')

  <a>
        <b>1
            <c>1</c>
        </b>
        <d>1</d>
        <d>2</d>
        <d>3</d>
    </a>

2 个答案:

答案 0 :(得分:1)

纯XPath 1.0中的棘手。

在XSLT中,这通常是分组算法的一部分,所以在2.0中你会写

<xsl:for-each-group select="*" group-by="node-name()">
   .. current-group()[1] ..

或者在独立的XPath 2.0中,您可以执行类似

的操作
//*[not(node-name() = preceding-sibling::*/node-name())]

但是我无法在XPath 1.0中看到这样做的方法。看看它为什么需要它会很有趣。

答案 1 :(得分:0)

所以,答案是.. XPath 1.0中的实现是基于Michael Kay的精彩答案。

对于:nth-​​of-type(1),它看起来像:

//a//*[name(preceding-sibling::*[1]) != name()]

对于:nth-​​of-type(n)其中n&gt; 1它看起来像:

//a//*[name(preceding-sibling::*[n]) != name() and name(preceding-sibling::*[n-1]) = name()]

当然,它很棘手,在大多数情况下可以被更明显的功能所取代。 目标是找到完全相同的CSS伪的XPath实现。