2017-05-31 12 views
0

なぜXMLバリデーターは空の名前空間URIを使用できないのですか?バリデータ(http://www.xmlvalidation.com)の機能か、一般的なXMLの機能ですか?XML:空のURIを持つ名前空間

<?xml version="1.0"?> 
<root xmlns:em=""> 
<em:elem/> 
</root> 

名前空間URIに任意の文字列を使用できますか? (例:xmlns = "abcd")

答えて

0

名前空間宣言で空の文字列を使用すると、XML名前空間1.1で特定の意味があります。つまり、その名前は "宣言解除"に変わります。したがって、その範囲内で接頭辞 "em" URIには関連付けられていません。しかし、XML名前空間1.1は、ユーザーやXMLパーサの作家によって広く採用されたことはありません。

XML Namespaces 1.0明示的に言う(§2.2):空の文字列は、正当なURI参照であるが、名前空間名として使用することはできません。

"名前空間URIに任意の文字列を使用するのは有効ですか?"複雑なものです。 XML名前空間仕様は、一方でこう述べています。

An XML namespace is identified by a URI reference 

The attribute's normalized value MUST be either a URI reference — 
the namespace name identifying the namespace — or an empty string. 

また、言う:

The use of relative URI references, including 
same-document references, in namespace declarations 
is deprecated. 

を(あなたの例xmlns:p="abcd"が相対URI参照を使用しています。)

しかし、準拠ルール(§7)を定義することになると、それに準拠したd ocumentはその名前空間宣言に有効なURIを使わなければなりません、そして、私はこれが故意の決定であったことを知っています。実際にはXMLパーザやアプリケーションの大部分は文字列をネームスペース名として使用できますが、XOMライブラリなどの例外がいくつかあります。絶対URIを絶対的なものとして選択するようアドバイスします。