xml - 为什么 XML 字符约束是不对称的?

标签 xml special-characters

我不清楚 XML 字符验证中不对称背后的逻辑。

例如,后续的 XML 无效(如我所料):

<xml>
<value attr="<">my value</value>
</xml>

<xml>
<value attr="attribute">my value is < than</value>
</xml>

但是那些 XML 是有效的

<xml>
<value attr=">">my value</value>
</xml>

<xml>
<value attr="attribute">my value is > than</value>
</xml>

我期待的是任何角色都喜欢 <>&应始终被视为非法。 所以我想问一下那个选择的原因是什么(> 可以但 < 不是)。

最佳答案

编写语法规则是为了避免解析器必须提前扫描才能正确解释字符的需要。

<之间的区别和 >是遇到 < 时的解析器不向前扫描就不知道是标签的开头还是LESS THAN字符,而遇到>时,解析器根据其扫描历史(无需提前扫描)知道它应该被解释为标记结尾还是大于字符。

另请参阅:

关于xml - 为什么 XML 字符约束是不对称的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50584190/

相关文章:

xml - XSLT 2.0 - 在不丢弃现有前缀绑定(bind)的情况下更改命名空间

javascript - 为什么这个 reg exp 总是对数字成功?

php - Android 应用程序和 PHP 脚本之间的特殊字符

php - PHP 中的特殊字符(如 omega 和 beta)字符串匹配

xml - XPath 如何处理 XML namespace ?

php - 当项目名称包含&符号时,eBay API PHP 和 XML 解析错误

php - SimpleXML PHP - 从任何节点更改值

python - 无法借助 nltk 的正则表达式删除特殊字符

Gnuplot Postscript 特殊字符数学方程

c# - XML-(反)序列化整数的列表属性作为简单的分隔符分隔序列