Как написать XSLT для записи if, else if, else if и выбрать значение в цикле foreach [duplicate]

Используйте модуль datetime:

from datetime import datetime
ts = int("1284101485")

# if you encounter a "year is out of range" error the timestamp
# may be in milliseconds, try `ts /= 1000` in that case
print(datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S'))
134
задан kjhughes 28 July 2015 в 00:06
поделиться

4 ответа

Вы должны переопределить его с помощью метки <xsl:choose>:

       <xsl:choose>
         <xsl:when test="$CreatedDate > $IDAppendedDate">
           <h2> mooooooooooooo </h2>
         </xsl:when>
         <xsl:otherwise>
          <h2> dooooooooooooo </h2>
         </xsl:otherwise>
       </xsl:choose>
248
ответ дан Ian Roberts 26 August 2018 в 10:12
поделиться

Если оператор используется для проверки только одного условия быстро. Если у вас есть несколько опций, используйте <xsl:choose>, как показано ниже:

   <xsl:choose>
     <xsl:when test="$CreatedDate > $IDAppendedDate">
       <h2>mooooooooooooo</h2>
     </xsl:when>
     <xsl:otherwise>
      <h2>dooooooooooooo</h2>
     </xsl:otherwise>
   </xsl:choose>

Кроме того, вы можете использовать несколько тегов <xsl:when> для выражения If .. Else If или Switch паттернов, как показано ниже:

   <xsl:choose>
     <xsl:when test="$CreatedDate > $IDAppendedDate">
       <h2>mooooooooooooo</h2>
     </xsl:when>
     <xsl:when test="$CreatedDate = $IDAppendedDate">
       <h2>booooooooooooo</h2>
     </xsl:when>
     <xsl:otherwise>
      <h2>dooooooooooooo</h2>
     </xsl:otherwise>
   </xsl:choose>

Предыдущий пример был бы эквивалентен псевдокоду ниже:

   if ($CreatedDate > $IDAppendedDate)
   {
       output: <h2>mooooooooooooo</h2>
   }
   else if ($CreatedDate = $IDAppendedDate)
   {
       output: <h2>booooooooooooo</h2>
   }
   else
   {
       output: <h2>dooooooooooooo</h2>
   }
55
ответ дан c32hedge 26 August 2018 в 10:12
поделиться

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

  • Измените общий элемент h2.
  • Измените общий текст ooooooooooooo.
  • Помните о новой конструкции XPath 2.0 if/then/else, если используете XSLT 2.0.

XSLT 1.0 Решение ( также работает с XSLT 2.0)

<h2>
  <xsl:choose>
    <xsl:when test="$CreatedDate > $IDAppendedDate">m</xsl:when>
    <xsl:otherwise>d</xsl:otherwise>
  </xsl:choose>
  ooooooooooooo
</h2>

Решение XSLT 2.0

<h2>
   <xsl:value-of select="if ($CreatedDate > $IDAppendedDate) then 'm' else 'd'"/>
   ooooooooooooo
</h2>
30
ответ дан kjhughes 26 August 2018 в 10:12
поделиться

Наиболее простой подход заключается в выполнении второго if-теста, но с условием инвертированного. Эта методика короче, проще на глазах, и легче получить право, чем вложенный блок «выбрать-когда-иначе»:

<xsl:variable name="CreatedDate" select="@createDate"/>
     <xsl:variable name="IDAppendedDate" select="2012-01-01" />
     <b>date: <xsl:value-of select="$CreatedDate"/></b> 
     <xsl:if test="$CreatedDate &gt; $IDAppendedDate">
        <h2> mooooooooooooo </h2>
     </xsl:if>
     <xsl:if test="$CreatedDate &lt;= $IDAppendedDate">
        <h2> dooooooooooooo </h2>
     </xsl:if>

Вот реальный пример технологии, используемой в стиле- лист для правительственного веб-сайта: http://w1.weather.gov/xml/current_obs/latest_ob.xsl

2
ответ дан Raymond Hettinger 26 August 2018 в 10:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: