Нет HTML-решения. По спецификации HTML 4.01 поведение браузера не определено, если ни один из элементов option
не имеет атрибута selected
, и что на самом деле браузеры делают так, что они делают первый вариант предварительно выбранным.
As обходной путь, вы можете заменить элемент select
на набор элементов input type=radio
(с тем же name
атрибутом). Это создает контроль одного и того же типа, но с другим внешним видом и пользовательским интерфейсом. Если ни один из элементов input type=radio
не имеет атрибута checked
, ни один из них изначально не выбран в большинстве современных браузеров.
Это правильное выражение XPath 1.0, которое выбирает элемент с последним 5 символами, равным «_cost» в любом пространстве имен.
/data/stats/*[substring(name(), string-length(name()) - 4) = '_cost']
С XPath 1.0 вы можете использовать шаблон /data/stats/*[substring-after(name(), '_cost') = '']
. Это проверяет, заканчивается ли имя элемента суффиксом _cost
. В XPath 2.0 есть fn:ends-with(str, str)
, и ваш соответствующий вывод будет *[ends-with(name(), '_cost')]
.
Вы также можете использовать contains
, например
/data/stats[contains(.,'_cost')]
.
обозначает весь текстовый контент, и это выражение будет соответствовать всем узлам stats
, содержание которых содержит подстроку _const
. Никаких гарантий относительно имен позиций и узлов.
– Alex Nikolaenkov
17 November 2010 в 11:09
/data/stats/*[contains(local-name(),'_cost')]
будет работать, хотя ...
– annakata
17 November 2010 в 11:13
[contains(local-name(),'_cost')]
, он не дискриминирует позицию, которая является позором, но в контексте ее использования это не имеет большого значения.
– Ben Everard
17 November 2010 в 11:39
stats
, совпадающий с "_cost" в его строковом значении. Проверьте мой ответ.
– user
17 November 2010 в 13:38
<xsl:for-each select="substring(name(.), string-length(name(.)) - 1) = 'grp'">
Я получаю сообщение об ошибке: `XPTY0020: требуемый тип элемента контекста для дочерней оси - node (); заданное значение имеет тип элемента xs: boolean` – Si8 28 October 2015 в 15:00