我有一個包含序列化數據註釋的對象。它有這麼100%肯定一個布爾值屬性,它是真實的(與調試器進行測試),但是當我有這樣的XSLT:XSLT 1.0 xsl:布爾選擇測試
<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 =真()
一些背景info:它是一個asp.net對象,我使用數據註釋進行序列化。 .Net中的XSLT支持僅爲1.0。
編輯一塊我coupon.cs
[XmlAttribute("isperc")]
public bool IsPerc
{
get { return _isPerc; }
}
它不是空的,但作爲第二評註者指出,什麼是<xsl:value-of select="@isperc"/>
價值很好,似乎空。它解析爲html中的任何內容。沒有一個空格,不爲空等等。這是奇怪,因爲布爾是true
...
EDIT2這也沒什麼<xsl:value-of select="string(@isperc)"/>
輸出,所以這也失敗<xsl:when test="string(@isperc) = 'true'">
你能舉例說明你正在嘗試處理的輸入XML嗎? –
您是否消除了個案問題?請參閱http://stackoverflow.com/questions/8940695/how-to-check-for-string-equality-case-insensitive-in-xsl。什麼' 'return? –
dash
您*必須*提供源XML文檔(請儘可能小)和完整的XSLT轉換 - 不僅是一個片段。然後任何人都可以重現這個問題,這裏的許多人可以提供一個很好的解決方案。因此,在調試器中,獲取序列化結果並將此XML文檔放置在問題中。看起來,這是一個C#序列化問題,而不是XSLT問題。 –