- PR -

名前空間URIの実体参照

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/02/22
投稿数: 15
投稿日時: 2005-05-07 12:05
名前空間URIを実体参照に置き換えたXMLインスタンスを、
.NET FrameworkのXmlDoucument.Load()やXmlValidationReader.Read()で読み込むと、ArgumentExceptionが発生します。
実体参照を使わなければ問題は起こりませんが、これってバグでしょうか?

例:
<!DOCTYPE a [
<!ELEMENT a EMPTY>
<!ATTLIST a xmlns CDATA #IMPLIED>
<!ENTITY b "c">
]>
<a xmlns="&b;"/>
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-05-09 14:29
[定義:] 名前空間は、1ファミリーの予約済みアトリビュートを使って宣言される。
http://www.doraneko.org/xml/namespace10/19990114/Overview.html#ns-decl

< !ATTLIST a xmlns CDATA #IMPLIED>
を書いた瞬間に「予約済み」じゃなくなるのでは?
「予約済み」とはどういうこと、聞き返される困りますが。
未記入
会議室デビュー日: 2005/02/22
投稿数: 15
投稿日時: 2005-05-09 18:43
MMXさん、ありがとうございます。

> [定義:] 名前空間は、1ファミリーの予約済みアトリビュートを使って宣言される。

ここに書かれていることからは、原因をはっきり理解できませんでした。
<a xmlns="&b;"/>のところを<a xmlns="c"/>と書けばエラーにならないのが謎なのと、
あと、他のValidator(javax.xml.parsers.SAXParserのparse()メソッドなど)ではエラーにならないので、どちらの挙動が正しいのかが分かりません。
Atsushi.Eno
ベテラン
会議室デビュー日: 2003/04/23
投稿数: 60
投稿日時: 2005-05-10 15:12
XML 1.0およびNamespaces in XMLの仕様上、正しく解析されるべき文書です。(予約済みアトリビュートってxmlns*のことですから、全く関係ありません。)

.NET 1.x(少なくとも1.1 SP1)のバグですね。
.NET 2.0(beta2)では発生しません。

# monoではエラーではないけど実体参照がURIに展開されていなかったので修正しちゃいました
未記入
会議室デビュー日: 2005/02/22
投稿数: 15
投稿日時: 2005-05-11 08:58
Atsushi.Enoさん、ありがとうございます。

> .NET 1.x(少なくとも1.1 SP1)のバグですね。

ちなみに当方の環境は、「.NET 1.1(SPなし)」でした。

> .NET 2.0(beta2)では発生しません。

そうでしたか。
2.0のリリースを待つしか...
1

スキルアップ/キャリアアップ(JOB@IT)