2012-09-04 13 views
5

मैं <!doctype /> घोषणा में non breaking space entity को परिभाषित करने की कोशिश कर रहा हूं। कोड:अपरिभाषित इकाई और एक्सएमएल पार्सिंग अपवाद

<!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. 

मैं गलत क्या कर रहा हूँ मिल रहा है?

उत्तर

3

सबसे पहले, "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [ <!ENTITY nbsp "&#x00A0;"> ] में बाह्य और आंतरिक संस्थाओं के संयोजन अनावश्यक क्योंकि http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdwww.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 के लिए मान्य नहीं है। हालांकि, आप कर सकते हैं एक XmlValidatingReader या XmlTextReader उचित सेटिंग्स

, यदि संभव हो तो [यदि यह संभव नहीं है, यह संभव है!] यह, XmlReader एक XmlPreloadedResolver उपयोग करने के लिए स्थापित करने के लिए एक अच्छा विचार है एक है क्योंकि इस बात के साथ से Load उस डीटीडी के यूआरआई में गरीब ओल 'डब्ल्यू 3 सी और बहुत से लोगों को मारने वाले बहुत से लोग इसमें शामिल हैं, और वे आपकी स्थानीय प्रतिलिपि का उपयोग करके पूरी तरह से ठीक हैं ("बिल्कुल ठीक है" मेरा मतलब है कि वे वास्तव में खुश होंगे अगर हर कोई अपने सर्वर को काफी हद तक रोक देगा)। साथ ही उनके लिए अच्छा होने के नाते, यह आपके लिए बहुत तेज़ होगा।

9

इसके बजाय आप इस इकाई &#160; के साथ प्रयास कर सकते हैं।

संबंधित मुद्दे