Добавление нового класса из XSLT в существующий класс тега div? - PullRequest
0 голосов
/ 31 мая 2018
<div class="filter">
 <xsl:attribute name="class">

                <xsl:if test="@class=filter">
                  filter
                </xsl:if>
                <xsl:value-of select="Category"/>
 </xsl:attribute>
</div>

я хочу добавить новый класс, который я получаю из значения xsl, в верхний div, содержащий фильтр класс . Но, как я это делаю, просто удалите мой предыдущий класс и добавить новый класс . Но я хочу добавить оба класса одновременно.

1 Ответ

0 голосов
/ 31 мая 2018

Оператор <xsl:if test="@class=filter">, вероятно, не выполняет то, что вы ожидаете.

Сначала он сравнивает атрибут class с элементом с именем filter в вашем XML (что, вероятно, несуществовать).Возможно, вы хотели сравнить класс со строковым значением, которое вы бы сделали следующим образом:

<xsl:if test="@class='filter'">

Однако это приводит ко второй проблеме.Этот тест проверяет наличие атрибута класса в вашем входном XML (который вы не показали) для любого элемента, который вы в настоящее время сопоставляете.Он не проверяет атрибут класса, который вы только что создали в <div> в ваших выходных данных.

Использование xsl:attribute заменит любой существующий атрибут в элементе, который вы обрабатываете, поэтому вам не нужно помещатьclass="filter" на <div>.Вы можете просто сделать это ....

<div>
  <xsl:attribute name="class">
     <xsl:text>filter </xsl:text>
     <xsl:value-of select="Category"/>
  </xsl:attribute>
</div>

Еще лучше, используйте Шаблоны значений атрибутов , что позволит вам напрямую добавить атрибут class в тег <div>

<div class="filter {Category}" />

Таким образом, «фильтр» будет выводиться в виде строки, но фигурные скобки указывают на выражение, которое будет оценено, поэтому здесь будет выведено значение элемента Category.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...