2012-06-27 5 views
9

मैं एक ऐसी वेबसाइट का निर्माण कर रहा हूं जहां मुझे कम से कम सही मास्टरडाटा (मुझे लगता है कि मैं केवल एक ही नहीं हूं :-))क्या मैं html में unencoded ampersands (&) का उपयोग कर सकता हूं?

मेरे मामले में मुझे एक XML फ़ाइल को HTML में प्रस्तुत करना होगा XSL)। कभी-कभी मास्टरडाटा पहले से ही एचटीएमएल-एनसाइट्स का उपयोग कर रहा है (जैसे; é फ्रेंच शब्दों में) इसलिए वहां मुझे डबल एन्कोडिंग से बचने के लिए 'अक्षम-आउटपुट-एस्केपिंग =' हां 'का उपयोग करना होगा)।

सबसे आसान समाधान सभी को एक साथ से बाहर निकलने वाले आउटपुट अक्षम है, इसलिए मैं कभी भी डबल एन्कोडिंग का जोखिम नहीं चलाता।

इस मास्टरडाटा के लिए एन्कोडिंग याद करने वाले एकमात्र वर्ण एम्परसैंड हैं। लेकिन जब मैं उन्हें पार्स 'कच्चे' (ताकि बल्कि & & से सभी ब्राउज़रों इसके साथ ठीक होने लगते हैं

तो सवाल:। Html में इनकोडिंग नहीं ऐम्परसेंड का उपयोग करने का consequenses क्या हैं

+0

आपके सहानुभूति से निपटने के लिए आपके पास वास्तव में अजीब स्थिति है।क्या आप XSL रूपांतरण से पहले मास्टर डेटा को प्रीप्रोसेस कर सकते हैं? आप किसी भी रेडएक्सपी का उपयोग करके किसी भी नंगे एम्परसैंड को '& 'के साथ प्रतिस्थापित कर सकते हैं, ताकि एक्सएसएल में आने से पहले इनपुट को सामान्यीकृत किया जा सके। –

+0

@ पीटर आजकल एक प्रश्नकर्ता के लिए एक प्रश्न को एक डुप्लिकेट के रूप में एक-दूसरे से बंद करने के लिए संभव है। मैं ऐसा करने का सुझाव देता हूं। –

+0

@ मार्क मुझे आपकी टिप्पणी के बारे में सूचित किया गया, मुझे लगता है कि स्थिति अभी ठीक है? – Peter

उत्तर

8

AFAIK नंगे ampersands HTML में अवैध हैं। इसके साथ-साथ, परिणामों को देखें:

  • अब आप समस्या से पता लगाने और गहन रूप से पुनर्प्राप्त करने के लिए ब्राउज़र की क्षमताओं पर भरोसा कर रहे हैं। ध्यान दें कि ऐसा करने के लिए, ब्राउज़र को अनुमान: एक स्पेस के बाद "स्पष्ट रूप से" एम्पर्सेंड है, और © स्पष्ट रूप से कॉपीराइट प्रतीक है। लेकिन पाठ खंड edit&copy के बारे में क्या? मैं जिस ब्राउज़र का उपयोग कर रहा हूं वह अभी इसे उलझाता है।
  • यदि आप एक्सएचटीएमएल का उपयोग कर रहे हैं, या यदि सामग्री को किसी XML दस्तावेज़ में कभी भी डाला जा रहा है, तो परिणाम एक कठिन पार्सर त्रुटि होगी।

चूंकि इन मामलों के मैन्युअल रूप से उन सभी एम्पर्सेंड को प्रतिस्थापित करना अधिक कठिन है, जो संस्थाओं का हिस्सा नहीं हैं (रेगेक्स के साथ कहें), आपको वास्तव में बाद में करना चाहिए।

+1

ब्राउज़र को * अनुमान * की आवश्यकता नहीं है क्योंकि इसके लिए एक नमूना है, कम से कम HTML5 – Razor

7

यह निर्भर करता है?

सबसे अच्छा अनुसंधान मैं इस विषय पर देखा है पाया जा सकता है here

एचटीएमएल 5 में आप ऐम्परसेंड कि नीचे श्रेणियों में गिर नहीं है के सभी बच चाहिए:

+०१२३५१६४१०६

एक अस्पष्ट एम्परसेंड एक U + 0026 एम्परसेंड वर्णों (&) है कि रेंज में एक या अधिक वर्ण के बाद है U + 0030 अंक शून्य (0) U + 0039 अंक नौ (9), यू के लिए +0061 लैटिन लघु पत्र ए टू यू +007 ए लैटिन लघु पत्र जेड, और यू +0041 लैटिन कैपिटल लिटर ए टू यू +005 ए लैटिन कैपिटल लिटर जेड, उसके बाद यू +003 बी सेमिकोलॉन कैरेक्टर (;), जहां इन पात्रों नाम चरित्र संदर्भ खंड में दिए गए किसी भी नाम से मेल न करें।

+0

लिंक किए गए पोस्ट के लेखक मथियास बायेंस, एक भयानक और अत्यधिक सक्रिय डेवलपर हैं। एचटीएमएल, ईसीएमएस्क्रिप्ट और सीएसएस चश्मे के किनारे के मामलों के बारे में आपके पास कोई भी दिलचस्प सवाल है, मैथियस ने इसके बारे में पैडेंटिक विस्तार में लिखा है, जैसा कि उसने यहां किया है। –

4

Do I really need to encode '&' as '&'?

संक्षेप में देखें: हाँ आप कर सकते हैं, लेकिन सख्ती से बोला यह कानूनी नहीं है (एचटीएमएल 5 के अलावा जहां यह जब तक कि यह एक चरित्र इकाई "की तरह लग रहे" नहीं करता है के रूप में कानूनी है)।

+0

यूआरएल को इंगित करने के लिए धन्यवाद – Peter

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

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