Есть файл 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 блок.
Заранее благодарю.
Здравствуйте, MikaRSDN Soukhov, Вы писали:
И еще. А как мне сделать else блок.
<xsl:choose>
<xsl:when>
<!-- if logic -->
</xsl:when>
<xsl:otherwise>
<!-- else logic -->
</xsl:otherwise>
</xsl:choose>
Здравствуйте, 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>
и у меня нет ни одной красной надписи. Почему?
Здравствуйте, 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'">
Здравствуйте, 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:
Наша родина — CCCP
то в результирующем HTML будет написано
Наша родина &mdash; CCCP
что может не соответствовать ожиданиям. Если надо, чтобы спецсимволы, записанные в узлах, обрабатывались, нужно писать не
<xsl:value-of select="SecondColumn"/>
а
<xsl:value-of select="SecondColumn" disable-output-escaping="yes"/>