Раскраска текста
От: MikaRSDN Soukhov Stock#
Дата: 18.01.03 11:29
Оценка:
Есть файл xsl

<xsl:for-each select="MainNode/Node">
<xsl:sort select="Time" />
  <tr>
    <td><xsl:value-of select="FirstColumn"/></td>
    <xsl:if test="SecondColumn=Hello, World">
       <td style="color: red; "><xsl:value-of select=""/></td>
    <td><xsl:value-of select="ThirdColumn"/></td>
  </tr>
</xsl:for-each>


Как мне сделать так, чтобы второе значение выводилось красного цвета, если оно равно, допустим, "Hello, World". (в данный момент 2 колонка вообще не печатается) И еще. А как мне сделать else блок.

Заранее благодарю.
Re: Раскраска текста
От: Igor Soukhov  
Дата: 18.01.03 12:14
Оценка: 18 (2)
Здравствуйте, MikaRSDN Soukhov, Вы писали:


И еще. А как мне сделать else блок.



<xsl:choose>
  <xsl:when>
   <!-- if logic -->
  </xsl:when>
  <xsl:otherwise>
    <!-- else logic -->
  </xsl:otherwise>
</xsl:choose>
* thriving in a production environment *
Re[2]: Раскраска текста
От: MikaRSDN Soukhov Stock#
Дата: 18.01.03 12:45
Оценка:
Здравствуйте, Igor Soukhov, Вы писали:

Я теперь сделал так
<xsl:choose>
  <xsl:when test="SecondColumn=Hello, World">
    <td style="color: red; "><b><xsl:value-of select="SecondColumn"/></b></td>
  </xsl:when>
  <xsl:otherwise>
    <td><b><xsl:value-of select="SecondColumn"/></b></td>
  </xsl:otherwise>
</xsl:choose>


и у меня нет ни одной красной надписи. Почему?
Re[3]: Раскраска текста
От: Igor Soukhov  
Дата: 18.01.03 13:38
Оценка: 15 (1)
Здравствуйте, MikaRSDN Soukhov, Вы писали:

MS>Здравствуйте, Igor Soukhov, Вы писали:


MS>Я теперь сделал так

MS>
MS><xsl:choose>
MS>  <xsl:when test="SecondColumn=Hello, World">
MS>  <xsl:when test="SecondColumn=Hello, World">
MS>    <td style="color: red; "><b><xsl:value-of select="SecondColumn"/></b></td>
MS>  </xsl:when>
MS>  <xsl:otherwise>
MS>    <td><b><xsl:value-of select="SecondColumn"/></b></td>
MS>  </xsl:otherwise>
MS></xsl:choose>
MS>


MS>и у меня нет ни одной красной надписи. Почему?


что такое SecondColumn ? переменная ?
если да то надо к ней обрашаться вот так так:


<xsl:when test="$SecondColumn='Hello, World'">
* thriving in a production environment *
Re[4]: Раскраска текста
От: Bob Kotl Россия  
Дата: 19.01.03 16:35
Оценка: 15 (1)
Здравствуйте, Igor Soukhov, Вы писали:

IS>Здравствуйте, MikaRSDN Soukhov, Вы писали:


MS>>Здравствуйте, Igor Soukhov, Вы писали:


MS>>Я теперь сделал так

MS>>
MS>><xsl:choose>
MS>>  <xsl:when test="SecondColumn=Hello, World">
MS>>  <xsl:when test="SecondColumn=Hello, World">
MS>>    <td style="color: red; "><b><xsl:value-of select="SecondColumn"/></b></td>
MS>>  </xsl:when>
MS>>  <xsl:otherwise>
MS>>    <td><b><xsl:value-of select="SecondColumn"/></b></td>
MS>>  </xsl:otherwise>
MS>></xsl:choose>
MS>>


MS>>и у меня нет ни одной красной надписи. Почему?


IS>что такое SecondColumn ? переменная ?

IS>если да то надо к ней обрашаться вот так так:

IS>

IS>
IS><xsl:when test="$SecondColumn='Hello, World'">
IS>


да нет, похоже, это не переменная, а имя узла. Просто сравнение надо делать с значением, заключённым в апострофы. Полный текст правильного кода, по идее, должен быть такой:
<xsl:choose>
  <xsl:when test="SecondColumn='Hello, World'">
    <td style="color: red; "><b><xsl:value-of select="SecondColumn"/></b></td>
  </xsl:when>
  <xsl:otherwise>
    <td><b><xsl:value-of select="SecondColumn"/></b></td>
  </xsl:otherwise>
</xsl:choose>


И ещё. В данном коде, если в значении узла SecondColumn попадётся амперсанд, то он будет выведен как есть. Например, если значение SecondColumn:
Наша родина &mdash; CCCP

то в результирующем HTML будет написано
Наша родина &amp;mdash; CCCP

что может не соответствовать ожиданиям. Если надо, чтобы спецсимволы, записанные в узлах, обрабатывались, нужно писать не
<xsl:value-of select="SecondColumn"/>

а
<xsl:value-of select="SecondColumn" disable-output-escaping="yes"/>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.