如何找到最深的节点(步骤)-Xpath-php-xml-

如何找到最深的节点(步骤)-Xpath-php-xml-,php,xml,xpath,nodes,Php,Xml,Xpath,Nodes,问候 如何找到最深的节点? 因此,对于本例,字符串将是最深的节点: 我想要的结果是5 0 81473730700165 1 圣 一般资料 2. 3. 4. allowRelativeLinks 5使用XPath 2.0,我认为您可以编写一个XPath表达式,如max(后代:*[not(*)]/count(祖先:*)。使用XPath 1.0,您可以找到以XSLT作为宿主语言的节点,如中所示 <xsl:template match="/">


问候

如何找到最深的节点? 因此,对于本例,字符串将是最深的节点:

我想要的结果是5

0
81473730700165                        1
圣
一般资料
2.
3.
4.

allowRelativeLinks 5使用XPath 2.0,我认为您可以编写一个XPath表达式,如
max(后代:*[not(*)]/count(祖先:*)
。使用XPath 1.0,您可以找到以XSLT作为宿主语言的节点,如中所示

<xsl:template match="/">
  <xsl:for-each select="descendant::*[not(*)]">
    <xsl:sort select="count(ancestor::*)" data-type="number" order="descending"/>
    <xsl:if test="position() = 1">
      <xsl:value-of select="count(ancestor::*)"/>
    </xsl:if>
  </xsl:for-each>
</xsl:template>
<xsl:template match="/">
  <xsl:for-each select="descendant::*[not(*)]">
    <xsl:sort select="count(ancestor::*)" data-type="number" order="descending"/>
    <xsl:if test="position() = 1">
      <xsl:value-of select="count(ancestor::*)"/>
    </xsl:if>
  </xsl:for-each>
</xsl:template>
$xpath = new DOMXPath($doc);

$leafElements = $xpath->query("descendant::*[not(*)]");
$max = 0;

foreach ($leafElements as $el) {
  $count = $xpath->evaluate("count(ancestor::*)", $el);
  if ($count > $max) {
    $max = $count;
  }
}
// now use $max here