我正在使用xpath表达式来确定DOM树中的某个div类(感谢VolkerK!).
I am using an xpath expression to determine a certain div-class in my DOM tree (thanks to VolkerK!).
foreach($xpath->query('//div[@class="posts" and div[@class="foo"]]') as $node) $html['content'] = $node->textContent; //$html['node-position'] = $node->position(); // (global) index position of the child 'foo' }最终,我需要知道我的孩子'foo'在哪个(全局)索引位置,因为以后我想用jQuery替换它: eq()或nth-child().
Eventually I need to know which (global) index position my child 'foo' has, because I want to replace it with jQuery later: eq() or nth-child().
有办法吗?
我正在跟踪我的另一个有关选择正确元素的问题( XPath/Domdocument按类名检查子项).
I am following up on another Question of mine about selecting the right element (XPath/Domdocument check for child by class name).
谢谢!
更新:
UPDATE:
我发现使用:
$html['node-position'] = $node->getNodePath()实际上以父节点的xpath语法(/html/body/div [3])给出了路径和元素编号,但是如何为子div'foo'提供路径和元素编号?
actually gives me the path and the element number in xpath syntax (/html/body/div[3]) of the parent node, but how can it for the child div 'foo'?
推荐答案用于查找给定元素x 的位置"的XPath方法(其中,位置被定义为表示索引的索引) XML文档中所有x元素的顺序(按文档顺序)中的元素x是:
The XPath way to find the "position" of a given element x (where position is defined to mean the index of that element x in the sequence (in document order) of all x elements in the XML document) is:
count(preceding::x) + count(ancestor-or-self::x)当此XPath表达式以元素x作为当前节点(初始上下文节点)进行求值时,将产生如此定义的位置".
When this XPath expression is evaluating with the element x as the current node (initial context node), the so defined "position" is produced.
基于XSLT的验证:
让我们拥有这个XML文档:
Let's have this XML document:
<t> <d/> <emp/> <d> <emp/> <emp/> <emp/> </d> <d/> </t>此转换:
<xsl:stylesheet version="1.0" xmlns:xsl="www.w3/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:variable name="v3rdEmp" select="/*/d/emp[2]"/> <xsl:template match="/"> <xsl:value-of select= "count($v3rdEmp/preceding::emp) + count($v3rdEmp/ancestor-or-self::emp) "/> </xsl:template> </xsl:stylesheet>使用文档中的第3个emp元素作为初始上下文节点,计算以上XPath表达式.表达式中的x现在已替换为我们想要的元素名称-emp.然后输出表达式求值的结果-我们看到这是想要的正确结果:
evaluates the above XPath expression using the 3rd emp element in the document as the initial context node. The x in the expression is now substituted by our wanted element name -- emp. Then the result from the expression evaluation is output -- we see that this is the wanted, correct result:
3更多推荐
查找DomNode/Xpath子元素的索引位置
发布评论