xsl: если проверить, что ID не находится внутри массива - PullRequest
0 голосов
/ 20 сентября 2019

Я хочу проверить, находится ли идентификатор внутри массива.Если это не так, то я хочу добавить элемент в данные.Если идентификатор находится в массиве, я ничего не хочу делать.

Имя переменной = "blacklistIDs"

<element>1111</element>
<element>2222</element>

Функция тогда:

<xsl:if test="@ID!=$blacklistIDs/element">
      <xsl:copy-of select="."/>
      </xsl:if>

проверка, если идентификатор находится внутри массива, работает, однако проверка, если идентификатор не находится внутри массива, - нет.

Например.Проверьте, что ID внутри массива работает нормально.

<xsl:if test="@ID=$blacklistIDs/element">
      <xsl:copy-of select="."/>
      </xsl:if>

Что мне здесь не хватает?Является ли! = Не функциональным в этот момент?

1 Ответ

1 голос
/ 20 сентября 2019

Проверка @ID!=$blacklistIDs/element вернет true, если @ID не равен ни одному из элементов в массиве.То есть, если он не соответствует хотя бы одному элементу, то это правда.Он не должен отличаться от всех остальных.

Измените тест на этот (то есть отрицание вашей другой логики)

<xsl:if test="not(@ID = blacklistIDs/element)">

Вы можете прочитать о логике здесь на https://www.w3.org/TR/xpath-10/#node-sets

Если один сравниваемый объект является набором узлов, а другой является строкой, то сравнение будет истинным, если и только если в наборе узлов есть такой узел, чторезультат сравнения строкового значения узла и другой строки равен true

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