なぜXMLバリデーターは空の名前空間URIを使用できないのですか?バリデータ(http://www.xmlvalidation.com)の機能か、一般的なXMLの機能ですか?XML:空のURIを持つ名前空間
<?xml version="1.0"?>
<root xmlns:em="">
<em:elem/>
</root>
名前空間URIに任意の文字列を使用できますか? (例:xmlns = "abcd")
なぜXMLバリデーターは空の名前空間URIを使用できないのですか?バリデータ(http://www.xmlvalidation.com)の機能か、一般的なXMLの機能ですか?XML:空のURIを持つ名前空間
<?xml version="1.0"?>
<root xmlns:em="">
<em:elem/>
</root>
名前空間URIに任意の文字列を使用できますか? (例:xmlns = "abcd")
名前空間宣言で空の文字列を使用すると、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を絶対的なものとして選択するようアドバイスします。