You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Unicode微符号U+00B5不属于合法XML NameChar?

问题解答

这并非疏漏,而是XML规范基于Unicode字符属性的有意设计,原因如下:

  • XML NameChar的核心规则
    XML 1.0(及后续版本)对NameChar的定义严格遵循Unicode字符的分类属性,仅允许以下几类字符:

    • 字母类(Letter,包括各种语言的大小写字母)
    • 标记类(Mark,比如重音符号)
    • 数字类(Number)
    • 连接标点类(Connector_Punctuation,如下划线_)
    • 特定的少量符号(如冒号:、连字符-等)
  • 两个字符的Unicode属性差异

    • U+00B5(Latin-1补充块的微符号):Unicode分类为Symbol, Other(其他符号),不属于上述任何符合NameChar要求的类别,因此无法通过XML命名规则验证。
    • U+03BC(希腊语小写字母μ):Unicode分类为Letter, Lowercase(小写字母),完全符合NameChar的字符类型要求。
  • 规范设计的考量
    XML命名体系的核心是区分“标识符”和“符号/字面量”:标识符(如元素名、实体名)需要具备字母或类似字母的属性,以便解析器能明确区分命名结构与内容。U+00B5虽然语义上是单位符号,但从Unicode属性上属于符号类,不符合标识符的设计要求。

如果需要在DTD中使用语义正确的“µm”作为测量单位,建议将其定义为字符串枚举而非标识符枚举——比如在属性定义中使用( "µm" | "mm" | "m" )这样的形式,而非依赖Name类型的实体定义。

内容的提问来源于stack exchange,提问作者Theodore Hall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 09:39:58