我正在阅读w3cschools XSLT教程,我在这个页面:xsl-if.
在该页面上(红色)是文本<xsl:if test="price > 10">
.这有效.我修改了要使用的代码,"<"
并且工作正常.
我测试过<xsl:if test="price > 10">
(注意使用>
而不是>
).这也有效.
但这失败了: <xsl:if test="price < 10">
.错误是XML Parsing Error: not well-formed
,它指向<
表达式中的符号.
如果>
符号工作正常,为什么使用<
失败?(我正在使用FireFox)
Dim*_*hev 12
如果>符号工作正常,为什么使用<fail?(我正在使用FireFox)
因为"<"字符是属性值中非法的少数字符之一(它是标记字符的开头).
来自XML规范
[10] AttValue ::= '"' ([^<&"] | Reference)* '"'
Run Code Online (Sandbox Code Playgroud)
可以清楚地看到,任何属性值都不允许使用"<"和"&"字符.
更新:正如@Tomalak所注意到的,上面应该是:
可以清楚地看到,"<"和"&"字符(除非后者是实体引用或字符引用的一部分)在任何属性值中都是不允许的.
小智 6
您还可以在w3schools上看到答案:
http://www.w3schools.com/xmL/xml_syntax.asp
实体参考
某些字符在XML中具有特殊含义.
如果在XML元素中放置像"<"这样的字符,它将生成错误,因为解析器将其解释为新元素的开头.