2011-05-10 96 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