gpt4 book ai didi

xml - 冒号是 XML 标记名称中合法的第一个字符吗?

转载 作者:数据小太阳 更新时间:2023-10-29 02:23:28 24 4
gpt4 key购买 nike

根据W3C XML Recommendation , 起始标记名定义如下:

STag ::= '<' Name (S Attribute)* S? '>'

..其中 名称 是:

Name ::= NameStartChar (NameChar)*
NameStartChar ::= ":" | [A-Z] | ...

..(注意,冒号可以作为第一个字符出现)表明以下是有效的 XML 文档:

<?xml version="1.0" ?><:doc></:doc>

..但是我在其中尝试此操作的任何解析器都将冒号显示为格式错误。

此外,在附录 B 下(虽然现在是文档的折旧部分)它明确指出:

Characters ':' and '_' are allowed as name-start characters.

..和:

<?xml version="1.0" ?><_doc></_doc>

..被我试过的 XML 解析器接受。

那么,冒号是否是标记名称中有效的第一个字符,我使用的解析器是错误的,还是我阅读的规范有误?

最佳答案

是的,在基本 XML 级别,冒号 (:) 可以作为名称开始字符。您引用的 BNF 规则清楚地说明了这一点。

然而,W3C XML Recommendation is clear除了命名空间之外,不应使用冒号:

Note:

The Namespaces in XML Recommendation [XML Names] assigns a meaning to names containing colon characters. Therefore, authors should not use the colon in XML names except for namespace purposes, but XML processors must accept the colon as a name character.

还有 XML Namespace标签的 BNF 规则基于 QName , 它只允许名称中的冒号作为 PrefixLocalPart 之间的分隔符:

QName          ::= PrefixedName | UnprefixedName
PrefixedName ::= Prefix ':' LocalPart
UnprefixedName ::= LocalPart
Prefix ::= NCName
LocalPart ::= NCName
NCName ::= Name - (Char* ':' Char*) /* An XML Name, minus the ":" */

有人可能会问为什么 NameStartChar 一开始就不允许使用冒号。如果幸运的话,C. M. Sperberg-McQueen 可能会提供权威的解释。但是,我怀疑这是关于如何设计 namespace 的不断发展的概念的问题。

first published working draft in 1996 W3C XML 推荐标准的定义为 STag哪个did not allow colon :

STag  ::= '<' Name (S Attribute)* S? '>'
Name ::= (Letter | '-') (Letter | Digit | '-' | '.')*

到 1998 年,Name 中允许使用冒号,

Name  ::= (Letter | '_' | ':') (NameChar)*

和一个earlier form关于冒号使用的警告阅读:

Note: The colon character within XML names is reserved for experimentation with name spaces. Its meaning is expected to be standardized at some future point, at which point those documents using the colon for experimental purposes may need to be updated. (There is no guarantee that any name-space mechanism adopted for XML will in fact use the colon as a name-space delimiter.) In practice, this means that authors should not use the colon in XML names except as part of name-space experiments, but that XML processors should accept the colon as a name character.

这种需求是预料之中的,但当冒号第一次被引入到标签名称时,确切的形式可能还不知道。

关于xml - 冒号是 XML 标记名称中合法的第一个字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40445735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com