- - PR -
名前空間URIの実体参照
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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;"/> |
|
投稿日時: 2005-05-09 14:29
[定義:] 名前空間は、1ファミリーの予約済みアトリビュートを使って宣言される。
http://www.doraneko.org/xml/namespace10/19990114/Overview.html#ns-decl < !ATTLIST a xmlns CDATA #IMPLIED> を書いた瞬間に「予約済み」じゃなくなるのでは? 「予約済み」とはどういうこと、聞き返される困りますが。 |
|
投稿日時: 2005-05-09 18:43
MMXさん、ありがとうございます。
> [定義:] 名前空間は、1ファミリーの予約済みアトリビュートを使って宣言される。 ここに書かれていることからは、原因をはっきり理解できませんでした。 <a xmlns="&b;"/>のところを<a xmlns="c"/>と書けばエラーにならないのが謎なのと、 あと、他のValidator(javax.xml.parsers.SAXParserのparse()メソッドなど)ではエラーにならないので、どちらの挙動が正しいのかが分かりません。 |
|
投稿日時: 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-05-11 08:58
Atsushi.Enoさん、ありがとうございます。
> .NET 1.x(少なくとも1.1 SP1)のバグですね。 ちなみに当方の環境は、「.NET 1.1(SPなし)」でした。 > .NET 2.0(beta2)では発生しません。 そうでしたか。 2.0のリリースを待つしか... |
1