для каждого нет результатов текст - PullRequest
1 голос
/ 30 октября 2009

У меня есть for-each, и когда ничего не выводится, я бы хотел отобразить текст по умолчанию.

Если у меня есть ...

<xsl:for-each select='xpath'> Some content for each matching element result. </xsl:for-each>

Что бы я хотел:

<xsl:for-each select='xpath'>
   <xsl:output-this-when-there-is-content> Some content for each matching element result. </xsl:output-this-when-there-is-content>
   <xsl:no-results-output> Some content for when the for-each finds no matches. </xsl:no-results-output>
</xsl:for-each>

Может кто-нибудь сказать мне, как это сделать, пожалуйста?

Спасибо

Мэтт

Ответы [ 3 ]

3 голосов
/ 30 октября 2009

Если у вас есть:

<xsl:for-each select="xpath"> ...

Вы можете сделать что-то вроде:

<xsl:choose>
    <xsl:when test="xpath">
        <xsl:for-each select="xpath"> ...
    </xsl:when>
    <xsl:otherwise>
        <xsl:text>Some default text</xsl:text>
    </xsl:otherwise>
</xsl:choose>

Чтобы избежать двойного теста XPath (и дублирования), вы, вероятно, можете использовать xsl:variable, что-то вроде следующего (синтаксис может быть немного неправильным, но грубая идея должна быть правильной).

<xsl:choose>
    <xsl:variable name="elems" select="xpath"/>
    <xsl:when test="$elems">
        <xsl:for-each select="$elems"> ...
    </xsl:when>
    <xsl:otherwise>
        <xsl:text>Some default text</xsl:text>
    </xsl:otherwise>
</xsl:choose>
2 голосов
/ 30 октября 2009

Чтобы избежать многословия решения <xsl:choose>, предложенного Грегом Бичом, вы можете сделать:

<xsl:variable name="elems" select="xpath"/>

<xsl:for-each select="$elems">
  <!-- ... -->
</xsl:for-each>

<xsl:if test="not($elems)">
  <xsl:text>Some default text</xsl:text>
</xsl:if>

<xsl:variable> для эффективности, он избегает повторения одного и того же запроса.

<xsl:for-each> запускается только в том случае, если в $elems есть какие-либо узлы, <xsl:if> выполняется только в том случае, если их нет.

0 голосов
/ 30 октября 2009

Я думаю, что это будет хорошо:

If (x!=null)
{
console.write("Default Text")}
else
{
foreach (var y in x)
{

       Console.Writeline(y);
    //...
}
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...