Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
Html XPath后面/前面是否仅限于元素子代?_Html_Xml_Xpath - Fatal编程技术网

Html XPath后面/前面是否仅限于元素子代?

Html XPath后面/前面是否仅限于元素子代?,html,xml,xpath,Html,Xml,Xpath,让我们想象一下以下结构: <div class="text"> plainjkhtext-identifsdficccccator-123 <img src="#" /> PLAINTEXT-identificator-123 <img src="1" /> </div> <div> <img src="2" />

让我们想象一下以下结构:

<div class="text">
  plainjkhtext-identifsdficccccator-123
  <img src="#" />

  PLAINTEXT-identificator-123
  <img src="1" /> 

  </div>

<div>
  <img src="2" /> 
  <img src="1" /> 
</div>
但是我不能使用“following”轴,因为这将从第二个
中获取
元素,而第二个
甚至没有“text”类

<div class="text">
  plainjkhtext-identifsdficccccator-123
  <img src="#" />

  PLAINTEXT-identificator-123
  <b><img src="1" /></b>

  </div>

<div>
  <img src="2" /> 
  <img src="1" /> 
</div>
将所选的
img
元素限制为目标
div
中目标文本之后的元素,即使目标文本在其自己的标记中,也会根据请求进行限制


在XPath 2.0中,使用而不是
translate()
,或者将文本与的
i
不区分大小写标志匹配。

正好有效。如果明文标识器-123必须在同一个目录中?请更新答案,以确保目标
text()
节点也在目标
分区内。
谢谢!这将只从存在明文标识器123的位置选择元素,对吗?所以如果还有更多的话div@text使用标识符初始化不会引起问题。文本必须在同级之前,但可以由例如标记包围。前面的同级节点不能使用它。哇,好的,所以不要测试前面的文本节点同级节点,而是检查字符串值等于目标文本的任何类型的前面的同级节点。
<div class="text">
  plainjkhtext-identifsdficccccator-123
  <img src="#" />

  PLAINTEXT-identificator-123
  <b><img src="1" /></b>

  </div>

<div>
  <img src="2" /> 
  <img src="1" /> 
</div>
//img[ancestor-or-self::*/preceding-sibling::node()
       [translate(normalize-space(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                                    'abcdefghijklmnopqrstuvwxyz') 
         = 'plaintext-identificator-123']
       [ancestor::div/@class="text"]]