Как вы тестируете на отсутствие записей при использовании <xsl: for-each>? - PullRequest
5 голосов
/ 05 марта 2009

Мой код генерирует следующий XML:

<person_app>
  <person_data>
    <person>
         ...person details here...
    </person>
  </person_data>
</person_app>

Используя XSLT, я анализирую записи о человеке следующим образом:

<xsl:template match="/person_app/person_data">
  <xsl:for-each select="person">
      ...generate person HTML...
  </xsl:for-each>
</xsl:template>

Однако в тех случаях, когда я получаю ноль человек, я хотел бы отобразить «Записи не найдены» (или что-то подобное). Когда приложение возвращает ноль записей, XML напоминает следующее:

<person_app/>

Короче говоря, как я могу проверить пустой набор результатов, когда использую для анализа моих записей Person? Я пробовал следующее безуспешно:

<xsl:if test="not(person)">
  <div style="font-size:18pt"><xsl:text>No records found</xsl:text></div>
</xsl:if>

Ответы [ 2 ]

7 голосов
/ 05 марта 2009

Примерно так:

<xsl:choose>
  <xsl:when test="person">
    <xsl:for-each select="person">
       ...generate person HTML...
    </xsl:for-each>
  </xsl:when>
  <xsl:otherwise>
    <div style="font-size:18pt"><xsl:text>No records found</xsl:text></div>
  </xsl:otherwise>
</xsl:choose>
2 голосов
/ 05 марта 2009
<xsl:template match="/person_app/person_data">
  <xsl:if test="count(person) = 0">
    <div style="font-size:18pt"><xsl:text>No records found</xsl:text></div>
  </xsl:if>
  <xsl:for-each select="person">
      ...generate person HTML...
  </xsl:for-each>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...