在//header[.//span[contains(text(), 'part_title')]]//label[contains(@class, 'start')]
中,.
中的.//
点是什么意思?谢谢
答案 0 :(得分:7)
您需要了解XPath“context”节点的概念。在导航XPath表达式时,每个步骤都标识一个上下文节点或节点集,从中计算后续表达式,但绝对路径除外,例如 <entry>
<record>98</record>
<time>2017/03/13 21:27:54.615</time>
<type>Error</type>
<source>VisualStudio</source>
<description>LegacySitePackage failed for package [GitHubPackage]Source: 'GitHub.VisualStudio' Description: Object reference not set to an instance of an object.
System.NullReferenceException: Object reference not set to an instance of an object.
 at GitHub.VisualStudio.GitHubPackage.Initialize() in Y:\jenkins\workspace\GitHub for Visual Studio speakeasy jenkinskeep\src\GitHub.VisualStudio\GitHubPackage.cs:line 58
 at Microsoft.VisualStudio.Shell.Package.Microsoft.VisualStudio.Shell.Interop.IVsPackage.SetSite(IServiceProvider sp)</description>
<guid>{C3D3DC68-C977-411F-B3E8-03B0DCCF7DFC}</guid>
<hr>80004003 - E_POINTER</hr>
<errorinfo></errorinfo>
</entry>
。
构造//
表示“从当前节点开始,在当前上下文节点下面的任何级别找到下一个后代.//span
。与span
对比,这意味着一个直接的孩子{当前上下文节点的{1}}。
没有前导点./span
表示根节点(如果它是span
),而/span
表示文档中任何级别的第一个span
。
或者,更简单地说,前导点的含义与Linux目录中的//span
条目完全相同。