gpt4 book ai didi

xml - XML 中是否可以有多个命名空间前缀?

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

我想做这样的事情:

<root:secondlevel:thirdlevel
xmlns:secondlevel="http://secondlevel.com"
xmlns:secondlevel:thirdlevel="http://thirdlevel.com">
</root:secondlevel:thirdlevel>

有没有一种方法可以将这些多个级别 root:secondlevel:thirdlevel 作为有效的 XML?

最佳答案

不能,XML 中最多只能有一个命名空间前缀。

XML Namespace名称的 BNF 规则基于 QName , 它只允许一个 PrefixedName:

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

PrefixLocalPart 都不允许冒号 (:) 字符,因此最多可以有一个冒号(并且最多有一个 Prefix) 部分到 QName

Side note : 在基本级别的 XML 中语法上允许使用多个冒号:

STag          ::= '<' Name (S Attribute)* S? '>'
NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
Name ::= NameStartChar (NameChar)*

但是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 - XML 中是否可以有多个命名空间前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40553920/

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