5

宣言non breaking space entityで定義しようとしています。<!doctype />コード :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [ <!ENTITY nbsp "&#x00A0;"> ] />

 <html xmlns="http://www.w3.org/1999/xhtml">
  .. .... 

しかし、上記のドキュメントから XDocument オブジェクトを作成しているときに、例外が発生します

Undefined entity &nbsp. 

私は何を間違っていますか?

4

2 に答える 2

11

代わりにこのエンティティを試すことができます&#160;

于 2012-09-04T15:49:41.050 に答える
3

まず、の外部エンティティと内部エンティティの組み合わせ"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [ <!ENTITY nbsp "&#x00A0;"> ]は不要です。これは、どのインクルードがあなたのものとまったく同じであるかをhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd含むためです。www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent<!ENTITY nbsp "&#160;">

したがって、そのビットは次のようになります。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

次に、XDocumentはデフォルトでDTDに対して検証されません。ただし、またはLoadから適切な設定で行うことができますXmlValidatingReaderXmlTextReader

もし可能なら、[不可能な場合は可能にしてください!]XmlPreloadedResolverそのDTDとそれに含まれる.entファイルのURIで貧弱な古いW3Cをヒットする人がたくさんいるので、XmlReaderを使用するように設定することをお勧めします。 'それのローカルコピーを使用して完全に大丈夫です(「完全に大丈夫」とは、誰もがサーバーをそれほどハンマーで叩くのをやめれば、彼らは本当に喜ぶことを意味します)。彼らにとって良いだけでなく、あなたにとってもはるかに速くなります。

于 2012-09-04T16:47:08.800 に答える