संख्यात्मक वर्ण संदर्भ

संख्यात्मक वर्ण संदर्भ (एनसीआर) सामान्य मार्कअप (कंप्यूटर प्रोग्रामिंग) निर्माण होता है जिसका उपयोग एसजीएमएल और एसजीएमएल-व्युत्पन्न मार्कअप भाषाओं जैसे एचटीएमएल और एक्सएमएल में किया जाता है। इसमें वर्णों (कंप्यूटिंग) का छोटा अनुक्रम होता है, जो बदले में, एकल वर्ण का प्रतिनिधित्व करता है। इस प्रकार एसजीएमएल, एक्सएमएल और एचटीएमएल 4 के पश्चात् से, यूनिकोड के यूनिवर्सल अक्षर समूह (यूसीएस) के कोड बिंदुओं का उपयोग किया जाता है। अतः एनसीआर का उपयोग सामान्यतः उन वर्णों का प्रतिनिधित्व करने के लिए किया जाता है जो किसी विशेष दस्तावेज़ में सीधे एनकोडिंग करने योग्य नहीं होते हैं (उदाहरण के लिए, जिससे कि वह अंतरराष्ट्रीय वर्ण हैं जो उपयोग किए जा रहे 8-बिट अक्षरों को सांकेतिक अक्षरों में परिवर्तन में फिट नहीं होते हैं, या जिससे कि उनका विशेष वाक्यविन्यास अर्थ होता है) भाषा में जब दस्तावेज़ की व्याख्या मार्कअप-जागरूक पाठक द्वारा की जाती है, तब प्रत्येक एनसीआर के साथ ऐसा व्यवहार किया जाता है मानो यह वह अक्षर होता है, जिसका वह प्रतिनिधित्व करता है।

उदाहरण
एसजीएमएल, एचटीएमएल और एक्सएमएल में, ग्रीक कैपिटल लेटर सिग्मा के लिए निम्नलिखित सभी वैध संख्यात्मक अक्षर संदर्भ होता हैं। एसजीएमएल, एचटीएमएल और एक्सएमएल में, लैटिन कैपिटल अक्षर एई के लिए निम्नलिखित सभी वैध संख्यात्मक अक्षर संदर्भ होते हैं। एसजीएमएल, एचटीएमएल और एक्सएमएल में, लैटिन छोटे अक्षर शार्प एस के लिए निम्नलिखित सभी वैध संख्यात्मक अक्षर संदर्भ हैं मुद्रण योग्य ASCII वर्णों के लिए संख्यात्मक वर्ण संदर्भों की सूची:

चर्चा
मार्कअप भाषाओं को सामान्यतः यूसीएस या यूनिकोड वर्णों के संदर्भ में परिभाषित किया जाता है। अर्थात्, दस्तावेज़ में, अमूर्तता के सबसे बुनियादी स्तर पर, वर्णों का क्रम होता है, अतः अमूर्त इकाइयाँ होती हैं जो किसी भी वर्ण एन्कोडिंग से स्वतंत्र रूप से उपस्तिथ होती हैं।

आदर्श रूप से, जब मार्कअप भाषा का उपयोग करने वाले दस्तावेज़ के पात्रों को बिट्स के अनुक्रम के रूप में नेटवर्क पर भंडारण या ट्रांसमिशन के लिए एन्कोड किया जाता है, तब उपयोग किया जाने वाला एन्कोडिंग वह होता है, यदि यह नहीं होता है तब संपूर्ण यूनिकोड, सीधे विशेष बिट अनुक्रम के रूप में जो दस्तावेज़ में प्रत्येक अक्षर का प्रतिनिधित्व करने का समर्थन करता है।

चूँकि, कभी-कभी, सुविधा के कारणों से या तकनीकी सीमाओं के कारण, दस्तावेज़ों को ऐसे एन्कोडिंग के साथ एन्कोड किया जाता है जो कुछ वर्णों का सीधे प्रतिनिधित्व नहीं कर सकता है। उदाहरण के लिए, आईओएस 8859 पर आधारित व्यापक रूप से उपयोग किए जाने वाले एन्कोडिंग, अधिकतम 256 अद्वितीय वर्णों को 8-बिट बाइट के रूप में प्रदर्शित कर सकते हैं।

व्यवहार में, दस्तावेज़ों को शायद ही कभी आंतरिक रूप से अधिक एन्कोडिंग का उपयोग करने की अनुमति दी जाती है, इसलिए दस्तावेज़ लेखकों को एन्कोडेबल के संदर्भ में अनएन्कोडेबल वर्णों को व्यक्त करने का साधन प्रदान करने का दायित्व सामान्यतः मार्कअप भाषा पर होता है। यह सामान्यतः किसी प्रकार के एस्केप अक्षर के माध्यम से किया जाता है।

एसजीएमएल-आधारित मार्कअप भाषाएं दस्तावेज़ लेखकों को किसी भी यूनिकोड अक्षर का प्रतिनिधित्व करने या संदर्भित करने के लिए एएससीआईआई सीमा (यूनिकोड के पूर्व 128 कोड बिंदु) से वर्णों के विशेष अनुक्रमों का उपयोग करने की अनुमति देती हैं, अतः भले ही प्रतिनिधित्व किया जा रहा अक्षर सीधे उपलब्ध हो जाता है। इस प्रकार दस्तावेज़ की एन्कोडिंग यह विशेष क्रम अक्षर संदर्भ होता हैं।

वर्ण संदर्भ जो संदर्भित वर्ण के यूसीएस या यूनिकोड कोड बिंदु पर आधारित होते हैं, अतः संख्यात्मक वर्ण संदर्भ कहलाते हैं। इस प्रकार एचटीएमएल 4 और एक्सएचटीएमएल तथा एक्सएमएल के सभी संस्करणों में, कोड बिंदु को दशमलव (आधार 10) संख्या या हेक्साडेसिमल (आधार 16) संख्या के रूप में व्यक्त किया जा सकता है। अतः वाक्यविन्यास इस प्रकार होता है।

वर्ण U+0026 (एम्परसेंड), उसके पश्चात् वर्ण U+0023 (संख्या चिह्न), उसके पश्चात् निम्नलिखित विकल्पों में से:


 * या अधिक दशमलव अंक शून्य (U+0030) से नौ (U+0039) या
 * वर्ण U+0078 (एक्स) जिसके बाद या अधिक हेक्साडेसिमल अंक होते हैं, जो शून्य (U+0030) से नौ (U+0039), लैटिन बड़े अक्षर A (U+0041) से F (U+0046) तक होते हैं और लैटिन लघु अक्षर ए (U+0061) से एफ (U+0066);

सभी के बाद अक्षर U+003B (अर्धविराम) आता है। इस प्रकार एचटीएमएल के पुराने संस्करणों में हेक्साडेसिमल वाक्य - विन्यास की अनुमति नहीं होती थी।

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

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

प्रतिबंध
आईएसओ 10646 द्वारा परिभाषित सार्वभौमिक अक्षर समूह एसजीएमएल, एचटीएमएल 4 का दस्तावेज़ अक्षर समूह है, इसलिए अभाव रूप से, ऐसे दस्तावेज़ में कोई भी अक्षर, और ऐसे दस्तावेज़ में संदर्भित कोई भी अक्षर, यूसीएस में होना चाहिए।

जबकि एसजीएमएल का वाक्य-विन्यास अमान्य या अनिर्धारित कोड बिंदुओं के संदर्भों को प्रतिबंधित नहीं करता है, जैसे, एसजीएमएल-व्युत्पन्न मार्कअप भाषाएं जैसे एचटीएमएल और एक्सएमएल, संख्यात्मक वर्ण संदर्भों को केवल उन कोड बिंदुओं तक सीमित कर सकती हैं, और अधिकांशतः करती हैं जो वर्णों को निर्दिष्ट करता हैं।

अन्य कारणों से भी प्रतिबंध क्रियान्वित हो सकते हैं. उदाहरण के लिए, एचटीएमएल 4 में,, जो गैर-मुद्रण प्रपत्र फ़ीड नियंत्रण वर्ण का संदर्भ है, इसकी अनुमति है जिससे कि प्रपत्र फ़ीड वर्ण की अनुमति है। लेकिन एक्सएमएल में, फॉर्म फ़ीड अक्षर का उपयोग संदर्भ द्वारा भी नहीं किया जा सकता है। अन्य उदाहरण के रूप में,  , जो किसी अन्य नियंत्रण वर्ण का संदर्भ है, इसे एचटीएमएल या एक्सएमएल में उपयोग या संदर्भित करने की अनुमति नहीं है, लेकिन जब एचटीएमएल में उपयोग किया जाता है, तब इसे सामान्यतः वेब ब्राउज़र द्वारा त्रुटि के रूप में चिह्नित नहीं किया जाता है - जिनमें से कुछ इसे संदर्भ के रूप में व्याख्या करते हैं संगतता कारणों से विंडोज़-1252 एन्कोडिंग में कोड मान 128 द्वारा दर्शाए गए वर्ण के लिए इस वर्ण को, €, के रूप में प्रस्तुत किया जाना है   मानक-अनुपालक एचटीएमएल कोड में और उदाहरण के रूप में, 6 अक्टूबर, सन्न 2000 को एक्सएमएल 1.0 द्वितीय संस्करण के प्रकाशन से पहले, एक्सएमएल 1.0 आईएसओ 10646 के पुराने संस्करण पर आधारित था और वर्ण डेटा को छोड़कर, यू+एफएफएफडी से ऊपर वर्णों का उपयोग करना प्रतिबंधित होता था, इस प्रकार संदर्भ बना   (यू+10000) अवैध एक्सएमएल 1.1 और एक्सएमएल 1.0 के नए संस्करणों में, ऐसे संदर्भ की अनुमति होती है, जिससे कि उपलब्ध वर्ण भंडार को स्पष्ट रूप से विस्तारित किया गया था।

मार्कअप भाषाएँ इस पर भी प्रतिबंध लगाती हैं कि अक्षर संदर्भ कहाँ हो सकते हैं।

संगतता समस्याएँ
एसजीएमएल और एचटीएमएल के प्रारंभिक संस्करणों में, संख्यात्मक अक्षर संदर्भों की व्याख्या यूनिकोड के अतिरिक्त दस्तावेज़ अक्षर एन्कोडिंग के संबंध में की गई थी। इस प्रकार लैटिन-लिपि दस्तावेज़ों के लिए, उन दस्तावेज़ों में x80 और x9F के मध्य वर्णों के संख्यात्मक वर्ण संदर्भ यूनिकोड के विरुद्ध सही नहीं होते है, और उन्हें पुनः कोडित किया जाता है। इस प्रकार एचटीएमएल 4 से पहले एचटीएमएल मानक केवल पश्चिमी लैटिन लिपि दस्तावेजों का समर्थन करते थे और #7F से ऊपर के अक्षर संदर्भों का उपचार अनुप्रयोगों और राष्ट्रीय सम्मेलनों के मध्य भिन्न हो सकता है।

उदाहरण के लिए, जैसा कि ऊपर बताया गया है कि यूरो चिह्न € के लिए सही संख्यात्मक वर्ण संदर्भ  यूनिकोड का उपयोग करते समय दशमलव होता है   और हेक्साडेसिमल. चूँकि, यदि एचटीएमएल के अप्रचलित कार्यान्वयन का समर्थन करने वाले टूल का उपयोग किया जा रहा है, तब संदर्भ  (सीपी-1252 कोड पृष्ठ में यूरो चिह्न) या   (आईएसओ/आईईसी 8859-15 में यूरो चिह्न) कार्य कर सकता है।

अन्य उदाहरण के रूप में, यदि कुछ पाठ मूल रूप से मैक्रोमन वर्ण समूह का उपयोग करके बनाया गया था, तब उद्धरण चिह्न ग्लिफ़ “ को कोड बिंदु xD2 के साथ दर्शाया जाता है। यह यूटीएफ-8, आईएसओ 8859-1, या सीपी-1252 के रूप में एन्कोड किए गए दस्तावेज़ की अपेक्षा करने वाले प्रणाली में ठीक से प्रदर्शित नहीं होता है, जहां यह कोड बिंदु अक्षर Ò द्वारा कब्जा कर लिया गया है। इसके लिए सही संख्यात्मक वर्ण संदर्भ “ एचटीएमएल 4 में और नया होता है, जिससे कि U+201C इसका यूसीएस कोड होता है। इस प्रकार कुछ प्रणालियों में, एक्सएमएल और एचटीएमएल वर्ण इकाई संदर्भों की सूची   भी उपलब्ध हो सकता है।

यह भी देखें

 * एक्सएमएल और एचटीएमएल वर्ण इकाई संदर्भों की सूची