<div class="box box-0 box-hover-null">10828</div>
У меня есть серия из них в html-документе с номером переменной в виде text ().
Мне нужно найти первый div с самым высоким и самым низким текстовым значением.
Насколько мне известно, Selenium использует движок XPath соответствующего браузера - в настоящее время все браузеры поддерживают только XPath 1.0.
Таким образом, требуется выражение XPath 1.0.выбор первого <div>
элемента, строковое значение которого можно преобразовать в число, и это число является минимумом всех таких <div>
числовых значений.
Требуется аналогичное выражение XPath, но оно выбирает первое такое <div>
элемент с максимальным числовым значением.
Вот два выражения XPath, которые выбирают нужные элементы <div>
:
1-й <div>
элемент с минимальным числовым значением :
(//div[number(.) = number(.)
and number(.) = //div[number(.) = number(.)
and not(number(.) > //div[number(.) = number(.)]/text())
]
]
)[1]
1-й <div>
элемент с максимальным числовым значением :
(//div[number(.) = number(.)
and number(.) = //div[number(.) = number(.)
and not(number(.) < //div[number(.) = number(.)]/text())
]
]
)[1]
Вот проверка на основе XSLT 1.0 .Приведенное ниже преобразование оценивает эти два выражения XPath по отношению к документу XML и копирует в выходные данные результатов этой оценки (выбранные узлы):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
First node with Minimum value: <xsl:copy-of select=
"(//div[number(.) = number(.)
and number(.) = //div[number(.) = number(.)
and not(number(.) > //div[number(.) = number(.)]/text())
]
]
)[1]"/>
=======================
First node with Maximum value: <xsl:copy-of select=
"(//div[number(.) = number(.)
and number(.) = //div[number(.) = number(.)
and not(number(.) < //div[number(.) = number(.)]/text())
]
]
)[1]"/>
</xsl:template>
</xsl:stylesheet>
Когда это преобразование применяется к этому документу XML :
<html>
<div class="box box-0 box-hover-null">100</div>
<div class="box box-1 box-hover-null">100</div>
<div class="box box-2 box-hover-null">0500</div>
<div class="box box-3 box-hover-null">00500</div>
<div class="box box-4 box-hover-null">300</div>
<div class="box box-5 box-hover-null">200</div>
</html>
желаемый, правильный результат получается :
First node with Minimum value: <div class="box box-0 box-hover-null">100</div>
=======================
First node with Maximum value: <div class="box box-2 box-hover-null">0500</div>