2016-11-11 14 views

答えて

2

いいえ、XMLには最大で1つの名前空間接頭辞を使用できます。

名のXML Namespace BNF規則は、単一PrefixedNameを可能QName、に基づいている:

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

PrefixLocalPartコロン(:)文字を許可するので、であり得るいずれ大部分のコロン(最大でPrefixの1つ)は、の一部です。

Side note:コロンは、名前空間の目的以外で使用すべきではありません

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

複数のコロンは構文的にベースレベルのXMLで許可されています注:

XMLの名前空間の推奨事項[XML Names]は、コロン文字を含む名前に の意味を割り当てます。したがって、作成者 は、名前空間の目的以外ではXML名にコロンを使用しないでください。 しかし、XMLプロセッサは名前文字としてコロンを受け入れる必要があります。

名前空間では、上記のように複数の名前空間接頭辞を使用できません。

も参照してください:

+0

は '有効なことを意味し、' <私:: XML ::ノード>であるのか? –

+1

要素名の中の複数のコロンは、技術的には***整形式***(基本XMLレベル)ですが、***名前空間は整形式ではありません***。 (妥当性は、スキーマレベルの概念です;詳細については、[Well-formed vs Valid XML](http://stackoverflow.com/a/25830482/290085)を参照してください。おそらく、名前空間が正しく形成された***の違反を無視するXMLパーサを見つけるだろう。要するに:複数の名前空間接頭辞:しないでください。 – kjhughes

関連する問題