我使用以下 XPath 从文档中获取所有非空文本和图像节点,除了 id 为“mpp_controls”的 div 中的节点:
//img[not(ancestor::*[@id='mpp_controls'][normalize-space()])] | //text()[not(ancestor::*[@id='mpp_controls'])][normalize-space()]
由于两个元素的谓词相同,并且将来我可能会为类似的查询添加更多标签,因此我尝试缩短它。看着这个答案,我想出了:
//*[self::img or self::text()][not(ancestor::*[@id='mpp_controls'])][normalize-space()]
我也试过:
//*[img or text()][not(ancestor::*[@id='mpp_controls'])][normalize-space()]
不幸的是,两者都给我一个语法错误。是否有可能缩短此查询?