Учебное Пособие По Thymeleaf: Глава 20. Приложение C: Синтаксис Селектора Разметки

Оглавление



20 Приложение C: Синтаксис селектора разметки

Селекторы разметки Thymeleaf напрямую заимствованы из библиотеки анализатора Thymeleaf: AttoParser. Синтаксис этих селекторов очень похож на синтаксис селекторов в XPath, CSS и jQuery, что делает их удобными для большинства пользователей.

Вы можете взглянуть на полную ссылку См.

синтаксис в документации AttoParser. Например, следующий селектор выберет каждый с содержимым класса в каждой позиции разметки (обратите внимание, что это не так лаконично, как могло бы быть, читайте дальше, чтобы узнать, почему):

  
  
  
  
  
   

<div th:insert="mytemplate :: //div[@class='content']">.

</div>

Базовый синтаксис включает в себя:
  • /Икс означает прямых дочерних элементов текущего узла с именем x
  • //Икс означает дочерние элементы текущего узла с именем x на любой глубине
  • х[@z="v"] означает элементы с именем x и атрибутом z со значением «v».

  • x[@z1="v1" и @z2="v2"] означает элементы с именем x и атрибутами z1 и z2 со значениями «v1» и «v2» соответственно
  • х[я] означает элемент с именем x, расположенный под номером i среди своих братьев и сестер
  • х[@z="v"][я] означает элементы с именем x, атрибутом z со значением «v» и расположенные под номером i среди своих одноуровневых элементов, которые также соответствуют этому условию
Но вы можете использовать более сжатый синтаксис:
  • Икс точно эквивалентно //Икс (ищите элемент с именем или ссылкой x на любом уровне глубины, ссылка имеет атрибут th:ref или th:fragment)
  • Селекторы также разрешены без имени элемента/ссылки, если они содержат спецификацию аргумента.

    Таким образом, [@class='oneclass'] является допустимым селектором, который соответствует любым элементам (тегам) с атрибутом класса со значением " один класс "

Расширенные возможности выбора атрибутов:
  • Кроме = (равно), применяются также другие операторы сравнения: != (Не равный), ^= (начинается с) и $= (заканчивается).

    Например: x[@class^='раздел'] означает элементы с именем x и значением класса атрибута, которое начинается с раздела

  • Атрибуты могут быть указаны начиная с @ (стиль XPath) и без (стиль jQuery).

    Так, х[z='v'] эквивалент х[@z='v']

  • Модификаторы с несколькими атрибутами можно комбинировать либо с и (стиль XPath) и путем объединения нескольких модификаторов (стиль jQuery).

    Таким образом, x[@z1='v1' и @z2='v2'] на самом деле эквивалент x[@z1='v1'][@z2='v2'] (а также к x[z1='v1'][z2='v2'] )

Прямые селекторы, такие как jQuery:
  • x.oneclass эквивалент х[класс='одинкласс']
  • .

    один класс эквивалент [класс = 'один класс']

  • х#онид эквивалент x[id='oneid']
  • #oneid эквивалент [id='oneid']
  • х%oneref означает теги, имеющие атрибут й:ref="oneref" или й:фрагмент="oneref"
  • Прямые селекторы и селекторы атрибутов можно комбинировать: a.external[@href^='https']
Таким образом, выражение селектора разметки выше:

<div th:insert="mytemplate :: //div[@class='content']">.

</div>

Можно написать так:

<div th:insert="mytemplate :: div.content">.

</div>

Следуя другому примеру, выполните следующие действия:

<div th:replace="mytemplate :: myfrag">.

</div>

Будет искать фрагмент фрагмента th:fragment="myfrag" (или й: ссылка ссылки).

Но мы также будем искать теги с именем мояфраг , если они существовали (чего нет в HTML).

Обратите внимание на разницу:

<div th:replace="mytemplate :: .

myfrag">.

</div>

.

который фактически будет искать любые элементы с класс="мифраг" не заботясь о подписях: th:fragment (или й: ссылка ).

Многозначное отображение классов Селекторы разметки понимают, что атрибут класса двусмысленный (многозначный), и поэтому позволяет использовать селекторы для этого атрибута, даже если элемент имеет несколько значений класса.

Например, дел.

два будет соответствовать

<div class="one two three" />

Теги: #java #Thymeleaf #java

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.