2011-05-10 77 views
1

我在xsl文件中使用符號>,該工作正常,但當我使用像<=時,它什麼也沒有顯示。使用xsl中的符號

有誰可以告訴我,它有什麼問題<=和我應該使用哪種替代方法?

<xsl:if test="price &lt; 100"> 
<xsl:if test="price > 100"> 
+0

問得好,+1。看到我的答案有兩個可供選擇的解決方案和解釋。 :) – 2011-05-11 04:16:01

回答

0

你應該逃避<&lt;,正如你在第一個代碼示例有。

> escape是&gt;

您應該轉義在XML中具有特殊含義的字符 - 這些是<>"'&

雖然在屬性,使用>是好的。

請參閱this SO問題和答案。

+0

如果條件是價格<= 100,那麼什麼都不會出現,所以我應該使用哪個符號 – mike 2011-05-10 08:55:41

+0

>>字符必須轉義。閱讀規格(當然,試試看)。 :) – 2011-05-11 12:53:36

1

W3C XML spec說,一個字面<未在屬性允許的(>是OK):

任何實體的替換文本中提及的一個屬性值直接或間接地不能包含<。

所以在測試屬性,你需要逃跑<。如果你的條件是price <= 100那麼你將它寫成:

<xsl:if test="price &lt;= 100"> 
+0

這不是真的,>字符必須逃脫。閱讀規格(當然,試試看)。 :) – 2011-05-11 12:53:51

+0

@Dimitre Novatchev:你絕對正確!我按照你的建議嘗試了它,當然,它工作。我相應地更新了我的答案。每天學習新東西:) – riff 2011-05-12 03:19:00

+0

好。我很高興我的回答對你有用。 – 2011-05-12 03:24:42

1

XSLT樣式表必須有一個良好的XML文檔。這就是爲什麼當<字符(和&字符)不在CDATA部分時必須始終轉義的原因。

二者必選其一

<xsl:if test="price &lt;= 100"> 

,或者,如果你不喜歡逃避:

<xsl:if test="not(price > 100)"> 
+1

或' =價格」>「);) – mousio 2011-05-11 11:17:56