XML दस्तावेज़ों में भागने के लिए मुझे किन पात्रों की आवश्यकता है?




escaping character (8)

एक्सएमएल दस्तावेजों में कौन से पात्र बच निकले होंगे, या मुझे ऐसी सूची कहां मिल सकती है?


इन्हें बचने की जरूरत है:

"   "
'   '
<   &lt;
>   &gt;
&   &amp;

से घिरा हुआ: http://en.wikipedia.org/wiki/XML#Escaping

पांच पूर्वनिर्धारित संस्थाएं हैं:

&lt; represents "<"
&gt; represents ">"
&amp; represents "&"
&apos; represents '
&quot; represents "

"सभी अनुमत यूनिकोड वर्णों को संख्यात्मक वर्ण संदर्भ के साथ दर्शाया जा सकता है।" उदाहरण के लिए:

&#20013;

अधिकांश नियंत्रण वर्ण और अन्य यूनिकोड श्रेणियां विशेष रूप से बहिष्कृत होती हैं, जिसका अर्थ है (मुझे लगता है) वे या तो बच या प्रत्यक्ष नहीं हो सकते हैं:

http://en.wikipedia.org/wiki/Valid_characters_in_XML


शायद यह मदद करेगा:

एक्सएमएल और एचटीएमएल चरित्र इकाई संदर्भों की सूची :

एसजीएमएल, एचटीएमएल और एक्सएमएल दस्तावेज़ों में, वर्ण डेटा और विशेषता मानों के रूप में जाना जाने वाला तार्किक संरचना वर्णों के अनुक्रमों से मिलती है, जिसमें प्रत्येक वर्ण सीधे प्रकट हो सकता है (स्वयं का प्रतिनिधित्व करता है), या चरित्र संदर्भ नामक वर्णों की एक श्रृंखला द्वारा प्रदर्शित किया जा सकता है, जिनमें से दो प्रकार हैं: एक संख्यात्मक चरित्र संदर्भ और एक चरित्र इकाई संदर्भ। यह आलेख वर्ण इकाई संदर्भों को सूचीबद्ध करता है जो HTML और XML दस्तावेज़ों में मान्य हैं।

उस आलेख में निम्नलिखित पांच पूर्वनिर्धारित XML इकाइयां सूचीबद्ध हैं:

quot  "
amp   &
apos  '
lt    <
gt    >

यदि आप उचित कक्षा या पुस्तकालय का उपयोग करते हैं, तो वे आपके लिए भागने के लिए करेंगे। कई एक्सएमएल मुद्दे स्ट्रिंग concatenation के कारण होते हैं।

एक्सएमएल भागने के पात्र

केवल पांच हैं:

"   &quot;
'   &apos;
<   &lt;
>   &gt;
&   &amp;

वर्णों से बचने पर निर्भर करता है कि विशेष चरित्र का उपयोग कहाँ किया जाता है।

उदाहरण डब्ल्यू 3 सी मार्कअप सत्यापन सेवा पर मान्य किए जा सकते हैं।

टेक्स्ट

सुरक्षित तरीका टेक्स्ट में सभी पांच अक्षरों से बचने के लिए है, हालांकि, तीन वर्ण " , ' और > को पाठ में भागने की आवश्यकता नहीं है:

<?xml version="1.0"?>
<valid>"'></valid>

गुण

सुरक्षित तरीका सभी गुणों में पांच वर्णों से बचने के लिए है, हालांकि, चरित्र को विशेषताओं में से बचने की आवश्यकता नहीं है:

<?xml version="1.0"?>
<valid attribute=">"/>

यदि उद्धरण हैं तो चरित्र को गुणों में भागने की आवश्यकता नहीं है " :

<?xml version="1.0"?>
<valid attribute="'"/>

इसी प्रकार, " उद्धरण हैं तो " गुणों में भागने की आवश्यकता नहीं है:

<?xml version="1.0"?>
<valid attribute='"'/>

टिप्पणियाँ

टिप्पणियों में सभी 5 विशेष पात्रों से बच नहीं जाना चाहिए :

<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>

CDATA

CDATA अनुभागों में सभी 5 विशेष पात्रों से बच नहीं जाना चाहिए :

<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>

प्रसंस्करण निर्देश

एक्सएमएल प्रसंस्करण निर्देशों में सभी 5 विशेष पात्रों से बच नहीं जाना चाहिए :

<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>

एक्सएमएल बनाम एचटीएमएल

एचटीएमएल के पास अपने बचने वाले कोड हैं जो बहुत अधिक पात्रों को कवर करते हैं।


आमतौर पर ज्ञात पांच वर्णों के अलावा [<,>, &, ", '] मैं लंबवत टैब वर्ण (0x0B) से भी बचूंगा। यह वैध यूटीएफ -8 है, लेकिन मान्य XML 1.0 नहीं है, और यहां तक ​​कि कई पुस्तकालय भी शामिल हैं libxml2) इसे याद करें और चुपचाप अमान्य एक्सएमएल आउटपुट।


ये संदर्भ पर निर्भर करता है। सामग्री के लिए, यह <और &, और]]> है (हालांकि एक char के बजाय 3 की स्ट्रिंग)। विशेषता मानों के लिए, यह <और & और "और 'है। सीडीएटीए के लिए, यह है]]>।


पुराने, सामान्य रूप से पूछे जाने वाले प्रश्न के लिए नया, सरलीकृत उत्तर ...

सरलीकृत एक्सएमएल एस्केपिंग

  1. हमेशा (याद रखने के लिए 9 0% महत्वपूर्ण)

    • < &lt; जब तक < <tag/> शुरू नहीं हो रहा है।
    • भागो & रूप में &amp; जब तक एक &entity; शुरू नहीं हो रही है &entity;
  2. विशेषता मान (याद रखने के लिए 9% महत्वपूर्ण)

    • attr=" सिंगल कोट्स ' डबल कोट्स के भीतर ठीक है। "
    • attr=' " डबल उद्धरण " एकल उद्धरण के भीतर ठीक है। '
    • " &apos; &quot; और ' as &apos; अन्यथा से &apos;
  3. Comments , CDATA , और प्रसंस्करण निर्देश (याद रखने के लिए 1% महत्वपूर्ण)

    • <!-- Comments भीतर --> कुछ भी बचाना नहीं है, लेकिन तारों की अनुमति नहीं है।
    • <![CDATA[ भीतर ]]> कुछ भी CDATA नहीं है, लेकिन नहीं ]]> तारों की अनुमति है।
    • <?PITarget भीतर <?PITarget ?> कुछ भी <?PITarget नहीं है, लेकिन नहीं ?> तारों की अनुमति है।

वर्ल्ड वाइड वेब कंसोर्टियम (डब्ल्यू 3 सी) के विनिर्देशों के मुताबिक, ऐसे 5 वर्ण हैं जो एक्सएमएल दस्तावेज़ में उनके शाब्दिक रूप में प्रकट नहीं होना चाहिए , सिवाय इसके कि जब मार्कअप डिलीमीटर या टिप्पणी के भीतर उपयोग किया जाता है, एक प्रसंस्करण निर्देश, या सीडीएटीए अनुभाग । अन्य सभी मामलों में, इन वर्णों को या तो निम्न तालिका के अनुसार संबंधित इकाई या संख्यात्मक संदर्भ का उपयोग करके प्रतिस्थापित किया जाना चाहिए:

मूल चरित्र एक्सएमएल इकाई प्रतिस्थापन एक्सएमएल संख्यात्मक प्रतिस्थापन
< & lt; & # 60;
> & gt; & # 62;
" & quot; & # 34;
& amp; amp; & # 38;
' और apos; & # 39;

ध्यान दें कि पूर्ववर्ती संस्थाओं का उपयोग एचटीएमएल में भी किया जा सकता है, अपवाद के साथ ; , जिसे एक्सएचटीएमएल 1.0 के साथ पेश किया गया था और इसे HTML 4 में घोषित नहीं किया गया है। इस कारण से, और रेट्रो-संगतता सुनिश्चित करने के लिए, एक्सएचटीएमएल विनिर्देश के उपयोग की सिफारिश की जाती है & # 39; बजाय।





character