2015-03-09 4 views
0

Я работаю с C# и XSLT 2.0. У меня возникла проблема с одним из шаблонов, похоже, он падает над заявлением <xsl:choose>. Прошедшие значения: Key - Value пары и все, кроме двух значений, являются десятичными. Намерение состоит в форматировании десятичных знаков с 2 десятичными знаками и , на тысячи, а целые числа должны быть без десятичных знаков.xsl: выберите Выражение должно быть оценено до набора узлов

<xsl:choose> 
     <xsl:when test="Key='Seller count' || Key='Buyer count'"> 
     <td> 
      <xsl:value-of select="format-number(Value, '0')"/> 
     </td> 
     </xsl:when> 
     <xsl:otherwise> 
     <td> 
      <xsl:value-of select="format-number(Value, '#,##0.00')"/> 
     </td> 
     </xsl:otherwise> 
    </xsl:choose>` 

дает мне

An exception of type 'System.Xml.Xsl.XslTransformException' occurred in  System.Data.SqlXml.dll but was not handled in user code 

Additional information: Expression must evaluate to a node-set. 

что несколько удивительно, так как он получает открытия и закрытия <td> </td> в обоих when и otherwise.

Я предполагаю, что это нечто очевидное, что я не вижу.

+0

Можете ли вы отправить минимальный, но полный код с вашим входным XML. –

ответ

4

XSLT 1.0 имеет оператор объединения |, который работает с множествами узлов и булевым оператором or, который работает с булевыми значениями. В XSLT нет оператора ||, ни в 1.0, ни в 2.0. Если вы хотите написать выражение boolean or, используйте <xsl:when test="Key='Seller count' or Key='Buyer count'">.

+0

Я делаю эту ошибку каждый раз. :) Благодаря. –

 Смежные вопросы

  • Нет связанных вопросов^_^