我有一个带有用于序列化的数据注释的对象。它有一个布尔属性,它是真的(用调试器测试),所以 100% 确定,但是当我在 xslt 中有这个时:
<xsl:for-each select="order/Coupons/orderedCoupons" >
<tr>
<td>Discount <xsl:value-of select="@code"/></td>
<td>
<xsl:choose>
<xsl:when test="@isperc='true'">
<xsl:value-of select="@disvalue"/>%
</xsl:when>
<xsl:otherwise>Epic fail
€ <xsl:value-of select="format-number(@disvalue, '#.###,00', 'euro')" />
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:for-each>
它总是显示史诗失败,所以测试总是失败。我也试过:
- @isperc='真'
- @isperc=1
- 布尔值(@isperc)
- @isperc = true()
更多背景信息:它是一个 asp.net 对象,我使用内置数据注释对其进行序列化。.Net 中的 XSLT 支持仅为 1.0。
编辑我的一段coupon.cs
[XmlAttribute("isperc")]
public bool IsPerc
{
get { return _isPerc; }
}
它不可为空,但正如第二位评论者指出的那样,<xsl:value-of select="@isperc"/>
well 的价值是什么,它似乎是空的。它在 html 中解析为空。不是空格,不是 null 等等,这很奇怪,因为布尔值是true
......
edit2这也没有输出任何东西<xsl:value-of select="string(@isperc)"/>
,所以这也失败了<xsl:when test="string(@isperc) = 'true'">