我正在阅读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)
答案 0 :(得分:12)
如果&gt;符号工作得很好,为什么呢 使用&lt;失败? (我正在使用FireFox)
因为“&lt;” character是属性值中少数非法的字符之一(它是标记字符的开头)。
[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编码的句点。