XML दस्तावेज़ों में किन वर्णों से बच जाना चाहिए, या मुझे ऐसी सूची कहां मिल सकती है?
XML दस्तावेज़ों में किन वर्णों से बच जाना चाहिए, या मुझे ऐसी सूची कहां मिल सकती है?
जवाबों:
यदि आप एक उपयुक्त वर्ग या पुस्तकालय का उपयोग करते हैं, तो वे आपके लिए पलायन करेंगे। कई XML समस्याएँ स्ट्रिंग समवर्ती के कारण होती हैं।
केवल पाँच हैं:
" "
' '
< <
> >
& &
बचने के पात्र इस बात पर निर्भर करते हैं कि विशेष पात्र का उपयोग कहाँ किया गया है।
उदाहरण W3C मार्कअप सत्यापन सेवा में मान्य किए जा सकते हैं ।
सुरक्षित तरीका यह है कि पाठ में सभी पाँच वर्णों से बच जाएँ। हालाँकि, तीन वर्ण "
, '
और >
पाठ में भाग जाने की आवश्यकता नहीं है:
<?xml version="1.0"?>
<valid>"'></valid>
सुरक्षित तरीका यह है कि विशेषताओं में सभी पांच वर्णों को छोड़ दिया जाए। हालांकि, >
चरित्र को विशेषताओं में बच जाने की जरूरत नहीं है:
<?xml version="1.0"?>
<valid attribute=">"/>
'
चरित्र गुण में उपयोग नहीं किया जाना जरूरत उद्धरण हैं "
:
<?xml version="1.0"?>
<valid attribute="'"/>
इसी तरह, "
यदि उद्धरण हैं, तो विशेषताओं में बच नहीं जाना चाहिए '
:
<?xml version="1.0"?>
<valid attribute='"'/>
सभी पांच विशेष पात्रों को टिप्पणियों में नहीं बचना चाहिए :
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
सभी पांच विशेष पात्रों को सीडीएटीए अनुभागों में बचाना नहीं चाहिए :
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
XML प्रोसेसिंग निर्देशों में सभी पांच विशेष वर्णों को नहीं बचना चाहिए :
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
HTML में भागने के कोड का अपना सेट है जो बहुत अधिक वर्णों को कवर करता है।
"
बदल दी जाएंगी&quot;
शायद इससे मदद मिलेगी:
XML और HTML चरित्र इकाई संदर्भों की सूची :
SGML, HTML और XML दस्तावेजों में, वर्ण डेटा और विशेषता मान के रूप में जाना जाने वाला तार्किक निर्माण वर्णों के अनुक्रम से मिलकर बनता है, जिसमें प्रत्येक वर्ण सीधे (स्वयं का प्रतिनिधित्व करते हुए) प्रकट हो सकता है, या वर्णों की एक श्रृंखला द्वारा प्रतिनिधित्व किया जा सकता है जिसे चरित्र संदर्भ कहा जाता है, जिनमें से दो प्रकार हैं: एक संख्यात्मक चरित्र संदर्भ और एक चरित्र इकाई संदर्भ। यह आलेख HTML और XML दस्तावेज़ों में मान्य वर्ण इकाई संदर्भों को सूचीबद्ध करता है।
वह लेख निम्नलिखित पाँच पूर्वनिर्धारित XML संस्थाओं को सूचीबद्ध करता है:
quot "
amp &
apos '
lt <
gt >
वर्ल्ड वाइड वेब कंसोर्टियम (w3C) की विशिष्टताओं के अनुसार, ऐसे 5 वर्ण हैं जो किसी XML दस्तावेज़ में अपने शाब्दिक रूप में प्रकट नहीं होने चाहिए , सिवाय इसके कि जब मार्कअप सीमांकक के रूप में या एक टिप्पणी, एक प्रसंस्करण निर्देश, या सीडीएटीए अनुभाग के रूप में उपयोग किया जाता है । अन्य सभी मामलों में, निम्न तालिका के अनुसार संबंधित वर्ण या संख्यात्मक संदर्भ का उपयोग करके इन वर्णों को प्रतिस्थापित किया जाना चाहिए:
Original CharacterXML entity replacementXML numeric replacement
< < <
> > >
" " "
& & &
' ' '
ध्यान दें कि पूर्वोक्त निकाय HTML में & apos के अपवाद के साथ भी उपयोग किए जा सकते हैं ; , जिसे XHTML 1.0 के साथ पेश किया गया था और HTML 4 में घोषित नहीं किया गया है। इस कारण से, और रेट्रो-संगतता सुनिश्चित करने के लिए, XHTML विनिर्देशन & # 39 के उपयोग की अनुशंसा करता है; बजाय।
>
को बचना चाहिए अगर यह ]]
सामग्री के भीतर है, जब तक कि यह ]]>
सीमांत खंड का हिस्सा नहीं है जो सीडीएटीए अनुभाग के अंत का संकेत देता है।
टैग और विशेषताओं के लिए अक्षर अलग करना अलग है।
टैग के लिए:
< <
> > (only for compatibility, read below)
& &
विशेषताओं के लिए:
" "
' '
एम्परसेंड वर्ण (और) और बाएं कोण कोष्ठक (<) उनके शाब्दिक रूप में प्रकट नहीं होना चाहिए, सिवाय इसके जब मार्कअप सीमांकक के रूप में उपयोग किया जाता है, या एक टिप्पणी, एक प्रसंस्करण निर्देश, या सीडीएटीए अनुभाग के भीतर। यदि उन्हें कहीं और जरूरत है, तो उन्हें क्रमशः संख्यात्मक चरित्र संदर्भों या "& amp;" और "& lt;" का उपयोग करके बच जाना चाहिए। सही कोण ब्रैकेट (>) को स्ट्रिंग "& gt;" का उपयोग करके दर्शाया जा सकता है, और अनुकूलता के लिए, सामग्री में "" & gt; जब वह स्ट्रिंग CDATA अनुभाग के अंत को चिह्नित नहीं कर रहा है।
एकल और दोहरे उद्धरण दोनों को शामिल करने के लिए विशेषता मानों की अनुमति देने के लिए, एपोस्ट्रोफ या एकल-उद्धरण वर्ण (') को "& apos;", और दोहरे-भाव वाले चरित्र (") के रूप में" & quot; "।
एक पुराने, आमतौर पर पूछे जाने वाले प्रश्न का नया, सरलीकृत उत्तर ...
हमेशा (90% याद रखना महत्वपूर्ण है)
मूल्यों को याद रखें (याद रखने के लिए 9% महत्वपूर्ण)
attr="
'
डबल कोट्स '
में सिंगल कोट्स ठीक हैं।"
attr='
"
सिंगल कोट्स के "
भीतर डबल कोट्स ठीक हैं।'
"
के रूप में "
और '
के रूप में '
नहीं तो।टिप्पणियाँ , सीडीएटीए , और प्रोसेसिंग निर्देश (याद रखने के लिए 0.9% महत्वपूर्ण)
<!--
टिप्पणियों के भीतर -->
कुछ भी नहीं बचा है, लेकिन किसी भी --
तार की अनुमति नहीं है।<![CDATA[
सीडीएटीए के भीतर ]]>
कुछ भी नहीं बचना है , लेकिन किसी भी ]]>
तार की अनुमति नहीं है।<?PITarget
पीआई के भीतर ?>
कुछ भी नहीं बचाना है , लेकिन किसी भी ?>
तार की अनुमति नहीं है।Esoterica (याद करने के लिए 0.1% महत्वपूर्ण)
]]>
के रूप में ]]>
जब तक ]]>
एक CDATA खंड समाप्त हो रहा है। ]]>
बच जाना चाहिए ]]>
। कि प्राप्त करने का सबसे आसान तरीका करने के लिए हो सकता है हमेशा से बचने >
के रूप में >
।
]]>
लेकिन यह सुझाव देने के बजाय कि इसे >
हमेशा बच निकलने के बजाय इसे esoterica में बदलना है (जैसा कि आप जानते हैं, इसकी आवश्यकता नहीं है)। XML से बचने के नियमों को आसानी से याद रखने और 100% सटीक बनाने के लिए यहाँ मेरा लक्ष्य है ।
AttValue
पर एक लिंक के माध्यम से मेरा उत्तर में उद्धृत 2. विशेषता मान ।
आमतौर पर ज्ञात पांच पात्रों [<,>, &, ", और '] के अलावा, मैं ऊर्ध्वाधर टैब वर्ण (0x0B) से भी बचूंगा। यह मान्य UTF-8 है, लेकिन XML XML मान्य नहीं है, और यहां तक कि कई पुस्तकालय भी हैं। (अत्यधिक पोर्टेबल (एएनएसआई सी) लाइब्रेरी libxml2 सहित ) इसे याद करते हैं और चुपचाप अवैध XML आउटपुट करते हैं।
एक्सिडेंट: XML, से बचकर
पाँच पूर्वनिर्धारित संस्थाएँ हैं:
< represents "<"
> represents ">"
& represents "&"
' represents '
" represents "
"सभी अनुमत यूनिकोड वर्णों को एक संख्यात्मक वर्ण संदर्भ के साथ दर्शाया जा सकता है।" उदाहरण के लिए:
中
अधिकांश नियंत्रण वर्णों और अन्य यूनिकोड श्रेणियों को विशेष रूप से बाहर रखा गया है, जिसका अर्थ है (मुझे लगता है) वे बच सकते हैं या प्रत्यक्ष नहीं हो सकते हैं:
ये संदर्भ पर निर्भर करता है। सामग्री के लिए, यह < और & , और ]]> है (हालांकि एक वर्ण के बजाय तीन की एक स्ट्रिंग)।
विशेषता मानों के लिए, यह < , & , " , और 'है ।
CDATA के लिए, यह ]]> है ।
केवल <
और &
भाग निकले जा करने के लिए अगर वे चरित्र डेटा और मार्कअप नहीं इलाज किया जा रहे हैं की आवश्यकता है:
<company>AT&T</company>