(!) Причём, если [contains(@class, "value")] убрать и добавить исключение атрибута @style (будь то просто атрибут или его значение @style="..." или contains)
//span/parent::section[contains(@class, "general-section") and not(contains(@style))]/@class
Хоть мы и исключили скрытые section, но (!!!) только в запросе.
(Результат ответа BAS = нету большинства скрытых section, но в результате есть две лишние)
Почему? -Ответ очевиден, так как мы заходили с элемента span убрались те section, которые нам нужны и те которые нам не нужны, которые не содержат span.
Вывод: Те же самые запросы в браузере через инспектор элементов (!) работают и выдают правильные значение, которые мы и запрашиваем. Следовательно not/=false работает нестабильно, ведь, если браузер обрабатывает мои запросы, то ошибки в них нету.