Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
跨两个关联元素匹配的XPath表达式_Xpath - Fatal编程技术网

跨两个关联元素匹配的XPath表达式

跨两个关联元素匹配的XPath表达式,xpath,Xpath,我得到了以下关联元素的XML: <doc> <!-- A block of style elements. --> <styles> <style id='style-1' class='bar'>…</style> <style id='style-2' class='baz'>…</style> … </styles> <!-- Document co

我得到了以下关联元素的XML:

<doc>
  <!-- A block of style elements. -->
  <styles>
    <style id='style-1' class='bar'>…</style>
    <style id='style-2' class='baz'>…</style>
    …
  </styles>
  <!-- Document content. -->
  <p style='style-1'>…</p>
  <p style='style-2'>…</p>
  …
</doc>

…
…
…


对于一个模板,我正在寻找一个XPath表达式匹配“一个元素
p
,其样式为类
bar
”?

纯XPath 1.0表达式,该表达式将返回所有元素p,其样式为类bar:


基本上,XPath查找
元素,其中
style
属性等于
纯XPath 1.0表达式的
id
,该表达式将返回样式为类bar的所有元素p:


基本上,XPath查找
元素,其中
style
属性等于
id
,假设这是文档结构的准确表示,我建议使用它,不要使用双斜杠(
/
),因为双斜杠可能非常低效:

/doc/p[@style = /doc/styles/style[@class = 'bar']/@id]

假设这是文档结构的准确表示,我建议您使用它,不要使用双斜杠(
/
),因为双斜杠可能非常低效:

/doc/p[@style = /doc/styles/style[@class = 'bar']/@id]

请同时考虑这两个解决方案之间的性能考虑。请同时考虑这两个解决方案之间的性能考虑。谢谢@ JLRishe,我以前遇到了这些性能差异,并且已经相应地调整了上面的表达式。但很好,你为其他访客指出了这一点!感谢@JLRishe,我之前遇到了这些性能差异,并且已经相应地调整了上述表达式。但很好,你为其他访客指出了这一点!