Возникли проблемы с тегом xsl: select - PullRequest
1 голос
/ 22 ноября 2011

У меня есть вопрос xsl, я пытаюсь использовать xsl: выбирать.Ниже приведен фрагмент.Проблема в том, что тег <xsl:otherwise> всегда срабатывает, что заставляет меня поверить, что <xsl:when> не оценивает должным образом.

Есть какие-нибудь подсказки относительно того, что я делаю неправильно?

<xsl:choose>
  <xsl:when test="./Property[@Name ='RecoveryModel']='Full'">
    <td align="left" bgcolor="#ff00ff">
      <xsl:value-of select="./Property[@Name ='RecoveryModel']"/>
    </td>   
  </xsl:when>
  <xsl:otherwise>
    <td><xsl:value-of select="./Property[@Name ='RecoveryModel']"/></td>
  </xsl:otherwise>
</xsl:choose>   

1 Ответ

1 голос
/ 22 ноября 2011

Попробуйте добавить [1] к тесту <xsl:when> следующим образом:

<xsl:choose>
  <xsl:when test="./Property[@Name ='RecoveryModel'][1]='Full'">
    <td align="left" bgcolor="#ff00ff">
      <xsl:value-of select="./Property[@Name ='RecoveryModel']"/>
    </td>   
  </xsl:when>
  <xsl:otherwise>
    <td><xsl:value-of select="./Property[@Name ='RecoveryModel']"/></td>
  </xsl:otherwise>
</xsl:choose>

В противном случае селектор ./Property[@Name ='RecoveryModel'] вернет (по существу) список совпадающих элементов (возможно, только один в вашем случае. Вам нужно [1], чтобы выбрать первый соответствующий элемент Property.


Кроме того, я предполагаю, что ваш исходный элемент выглядит примерно так:

<node>
  <Property Name="RecoveryModel">Full</Property>
<node>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...