Проверьте, является ли значение пустым в XML с помощью таблицы стилей XSL - PullRequest
1 голос
/ 29 марта 2012

Я использую скрипт XSLTprocessor для получения данных из внешнего источника. Теперь я хотел бы проверить, является ли определенное значение пустым, а затем вернуть пустое поле. это код, который я сейчас использую в моей таблице стилей XSL.

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html"/>

<xsl:template match="/">

  <table border="1" style="width:600px;margin-top:20px">
    <tr>
      <th align="left" style="text-transform: uppercase; font-size: 14px; color: white;font-weight: normal;">Date</th>
      <th align="left" style="text-transform: uppercase; font-size: 14px; color: white;font-weight: normal;">Location</th>
      <th align="right" style="text-transform: uppercase; font-size: 14px; color: white;font-weight: normal;">City</th>
      <th align="right" style="text-transform: uppercase; font-size: 14px; color: white;font-weight: normal;">Country</th>
      <th align="right" style="text-transform: uppercase; font-size: 14px; color: white;font-weight: normal;">Facebook</th>
    </tr>
    <xsl:for-each select="//item">
    <tr>
      <td style="text-align:left;"><xsl:value-of select="date" /></td>
      <td style="text-align:left;color:#ccc;"><xsl:value-of select="location" /></td>
      <td style="text-align:right;"><xsl:value-of select="city "/></td>
      <td style="text-align:right;"><xsl:value-of select="country" /></td>
      <td style="text-align:right;"><a>
<xsl:attribute name="href">
<xsl:value-of select="website" />
</xsl:attribute>
<xsl:attribute name="target">new</xsl:attribute>
I'm Attending
</a></td>
    </tr>
    </xsl:for-each>
  </table>
</xsl:template> 
</xsl:stylesheet>

Я хотел бы получить условное утверждение для значения "веб-сайт", которое возвращает ссылку на ссылку на событие Facebook. Но когда в системе, из которой поступают данные, ничего не заполнено, на ней не должна отображаться ссылка (Я посещаю)

Как это можно сделать с помощью теста XSL или какого-либо условного выражения?

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Я хотел бы получить условное утверждение для значения "веб-сайт", которое возвращает ссылку на ссылку на событие Facebook.Но когда в системе, из которой поступают данные, ничего не заполнено, на ней не должна отображаться ссылка (Я посещаю)

Простой и элегантный способ сделать это в XSLT :

<xsl:apply-templates select="website[text()]"/>

Тогда имейте этот шаблон :

<xsl:template match="website">
  <td style="text-align:right;">
    <a href="{.}" target="new">I'm Attending</a>
  </td>
</xsl:template>

Здесь вам не нужно проверять, существует ли элемент website - процессор XSLT сделает эту работу за вас.Таким образом, нам не нужно писать никаких явных условных инструкций, а код прост, короток и читабелен.

1 голос
/ 29 марта 2012

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

<xsl:if test="website/text()">
    <a>
    <xsl:attribute name="href">
        <xsl:value-of select="website" />
    </xsl:attribute>
    <xsl:attribute name="target">new</xsl:attribute>
    I'm Attending
    </a>
</xsl:if> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...