今天看系统的部分代码,看到了某个xml里面的一段,写在sql语句里的:
<![CDATA[WHERE timestampdiff(DAY, he.join_date, CURDATE()) <= 30]]>
之前没见过这种写法,以为是sql语句的高阶用法,查阅资料得知:
在xml中,”<”、”>”、”&”等字符是不能直接存入的,否则xml语法检查时会报错,如果想在xml中使用这些符号,必须将其转义为实体,如”<”、”>”、”&”,这样才能保存进xml文档。
在使用程序读取的时候,解析器会自动将这些实体转换回”<”
、”>”
、”&”
。举个例子:
<age> age < 30 </age>
上面这种写法会报错,应该这样写:
<age> age < 30 </age>
值得注意的是:
(1)转义序列字符之间不能有空格;
(2) 转义序列必须以”;”结束;
(3) 单独出现的”&”不会被认为是转义的开始;
(4) 区分大小写。
(1)& &
(2)< <
(3)> >
(4)" "
(5)' '
CDATA 部分由 “” 结束: