如何找到最深的节点(步骤)-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