php простой xpath вопрос

У меня есть этот div:

<div class="product-name">Product1</div> 

У меня также есть этот div:

 <div class="product-name gold">Product2</div> 

Как я могу изменить этот запрос xpath для получения любых div, содержащих имя продукта? Вместо получения точного соответствия.

 /html/body//div[@class='product-name'] 

Я googled это, но все, что я мог найти, это то, как использовать contains при поиске значения в узле, а не атрибут.

РЕДАКТИРОВАТЬ введите описание изображения здесь

Вы можете использовать contains() :

 /html/body//div[contains(@class, 'product-name')] 

Обновить:

Как отмечает @Alejandro в своем комментарии, это также будет соответствовать любому классу, содержащему product-name . См. Его ответ на решение XPath 1.0 .

Если вы используете XPath 2.0, вы также можете сделать это:

 /html/body//div[exists(index-of(tokenize(@class, "\s+"), "product-name"))] 

Классический ответ XPath 1.0 для этого существующего теста на последовательность:

 /html/body//div[ contains( concat(' ',normalize-space(@class),' '), ' product-name ' ) ] 

/html/body//div[contains(@class,'product-name')]

Атрибуты также являются узлами, они называются узлами атрибутов.