小于运算符会导致xsl-if中的错误“格式不正确”

时间:2010-08-19 21:51:00

标签: xml xslt

我正在阅读w3cschools XSLT教程,我在此页面:xsl-if

在该页面上(红色)是文本<xsl:if test="price &gt; 10">。这有效。我修改了代码以使用"&lt;",这也很好用。

我测试了<xsl:if test="price > 10">(请注意使用>代替&gt;)。这也有效。

但是失败了: <xsl:if test="price < 10">。错误为XML Parsing Error: not well-formed,它指向表达式中的<符号。

如果>符号正常,为什么使用<失败? (我正在使用FireFox)

3 个答案:

答案 0 :(得分:12)

  

如果&gt;符号工作得很好,为什么呢   使用&lt;失败? (我正在使用FireFox)

因为“&lt;” character是属性值中少数非法的字符之一(它是标记字符的开头)。

来自 XML Specification

[10]    AttValue    ::=    '"' ([^<&"] | Reference)* '"' 

可以清楚地看到,“&lt;”和“&amp;”任何属性值都不允许使用字符。

更新:正如@Tomalak所注意到的,上面应该是:

可以清楚地看到,“&lt;”和“&amp;”

中不允许使用字符(除非后者是实体引用或字符引用的一部分)

答案 1 :(得分:6)

您还可以在w3schools上看到答案:

http://www.w3schools.com/xmL/xml_syntax.asp

  

实体参考

     

某些角色具有特殊含义   在XML中。

     

如果你放置一个像“&lt;”这样的字符   在XML元素中,它会   生成错误因为解析器   将其解释为新事物的开始   元件

答案 2 :(得分:4)

未编码的“开场”括号<在XML属性值as per the XML spec中通常无效。

虽然允许使用“关闭”括号>,但使用它实际上是不好的风格(恕我直言)。 XML属性值必须是XML编码的句点。