Проблема с оператором if в xslt - PullRequest
1 голос
/ 09 августа 2011

Я пытаюсь отобразить кнопку редактирования для каждой строки, если вы вошли как администратор.

XML:

<vendors>
   <vendor id="1" name="Microsoft" description="1" odd="1"></vendor>
   <vendor id="2" name="Apple" description="1"></vendor>
   <vendor id="3" name="Google" description="1" odd="1"></vendor>
   <security ADMIN="1"></security>
</vendors>

XSLT:

<xsl:template match="vendors">
  <table>
    <thead>
      <tr>
        <xsl:if test="/vendors/security/@ADMIN = '1'">
          <td></td>
        </xsl:if>
        <td>Name</td>
        <td>Description</td>
      </tr>
    </thead>
      <tbody>
        <xsl:for-each select="vendor">
          <tr>
            <xsl:if test="@odd = '1'">
              <xsl:attribute name="class">odd</xsl:attribute>
            </xsl:if>
            <xsl:if test="/vendors/security/@ADMIN = '1'">
              <th><a href="#"><img src='edit.gif'></a></th>
            </xsl:if>
            <td title='Name'><xsl:value-of select="@name" /></td>
            <td title='Description'><xsl:value-of select="@description" /></td>
          </tr>
        </xsl:for-each>
      </tbody>
    </table>
  </div>
</xsl:template>

Прямо сейчасэто не работаетКогда вы вошли как администратор (@ADMIN = "1"), все работает.При входе в систему с @ADMIN = "" ни одна из ячеек таблицы не отображается (только пустые строки).

1 Ответ

1 голос
/ 09 августа 2011

Помимо проблемы в выходном документе (не закрытый img тег и не открытый div ) показанный XSLT является правильным и должен отображать имя / описание ячеек, даже когда @ ADMIN is "" (протестировано с использованием Saxon).

Вы также можете напрямую сравнивать целые числа следующим образом:

test="/vendors/security/@ADMIN = 1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...