我想做这样的事情:
<root:secondlevel:thirdlevel
xmlns:secondlevel="http://secondlevel.com"
xmlns:secondlevel:thirdlevel="http://thirdlevel.com">
</root:secondlevel:thirdlevel>
有没有办法将这些多级root:secondlevel:thirdlevel
作为有效的XML?
答案 0 :(得分:3)
不,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 ":" */
Prefix
和LocalPart
都不允许使用冒号(:
)字符,因此最多只能有一个冒号(最多只有一个Prefix
)到{{{ 1}}。
Side note:在基类XML中语法上允许多个冒号:
QName
但是除了命名空间之外,不应该使用冒号W3C XML Recommendation is clear:
注意:强>
XML建议[XML Names]中的命名空间分配了一个 含义为包含冒号字符的名称。因此,作者 除了命名空间之外,不应该在XML名称中使用冒号, 但XML处理器必须接受冒号作为名称字符。
并且命名空间不允许多个名称空间前缀,如上所示。
另见: