Как я могу сделать вариант в списке - PullRequest
1 голос
/ 16 декабря 2008

в псевдокоде

If Domain inList(GB,US,ES,FR Then
   Print This Html
Else
  Print This HTML
EndIf

Ответы [ 4 ]

4 голосов
/ 16 декабря 2008

Это очень общая форма, но где вы не знаете список во время разработки, если вы можете получить ссылку на набор узлов, который представляет список, вы можете сделать простую тест вроде:

<xsl:when test="$listset/item[@property=$variable]">

где скажем $ variable = / foo / bar / @ property и $ listset = / foo / list для XML

<?xml version="1.0"?>
<foo>
  <bar property="gb" />
  <list>
    <item property="gb"/>
    <item property="us"/>
  </list>
</foo>
1 голос
/ 16 декабря 2008

Попробуйте использовать xsl: choose. (см. Также здесь спецификации ). Он обеспечивает базовую функциональность if / else. РЕДАКТИРОВАТЬ - я сделал тест, и он работает:

<xsl:choose>
  <xsl:when test="domain = 'GB' or domain = 'US' or domain = 'ES' or domain = 'FR'">
    print this html
  </xsl:when>
  <xsl:otherwise>
    print other html
  </xsl:otherwise>
</xsl:choose>
0 голосов
/ 17 декабря 2008

Другое решение, не упомянутое текущими 3 ответами , состоит в том, чтобы иметь строку параметров, с которыми вы сравниваете значение domain. Затем следующее выражение XPath (в атрибуте @test <xsl:if> или <xsl:when> оценивается как true() точно, когда значение domain является одним из значений в строке с разделителями (мы используем пробел для разделителя) в этом конкретном примере):

contains(' GB US ES ', concat(' ', domain, ' '))

Здесь мы предполагаем, что в значении domain нет пробелов. Если это не может быть гарантировано, выражение XPath также может проверить это требование:

not(contains(domain, ' '))
and
contains(' GB US ES ', concat(' ', domain, ' '))

0 голосов
/ 17 декабря 2008

Если вы используете XSLT 2.0, данный файл

Вы можете использовать что-то вроде этого:
<xsl:template match="list/item"><br> Property [<xsl:value-of select="@property"/>] html<br> </xsl:template><br> <br> <xsl:template match="list/item[some $x in ('us', 'gb') satisfies $x eq @property ]"><br> Property [<xsl:value-of select="@property"/>] HTML<br> </xsl:template><br>

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