XML ලේඛනවලින් මට ගැලවීමට අවශ්‍ය චරිත මොනවාද?


941

එක්ස්එම්එල් ලේඛනවල ගැලවිය යුතු චරිත මොනවාද, නැතහොත් එවැනි ලැයිස්තුවක් මට සොයාගත හැක්කේ කොතැනින්ද?


7
උදාහරණය:<company>AT&amp;T</company>
ජැක්ට්‍රේඩ්

ශුද්ධාසනයේ සම්ප්රදායික: තායිවාන් XML පලා එන සංක්ෂිප්ත මම ප්රාථමික මූලාශ්ර (වලින් වෑහෙන කර ඇති බව පහසුවෙන් සිහි මග පෙන්වීමක් සඳහා පහත W3C විතන්ය සලකුණුබස භාෂා (XML) 1.0 (පස්වන සංස්කරණය) ).
kjhughes

Answers:


1377

ඔබ සුදුසු පංතියක් හෝ පුස්තකාලයක් භාවිතා කරන්නේ නම්, ඔවුන් ඔබ වෙනුවෙන් පැන යාම සිදු කරනු ඇත. බොහෝ XML ගැටළු ඇති වන්නේ නූල් සම්මුතියෙනි.

XML ගැලවීමේ අක්ෂර

ඇත්තේ පහක් පමණි:

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

අක්ෂර වලින් ගැලවීම විශේෂ චරිතය භාවිතා කරන ස්ථානය මත රඳා පවතී.

උදාහරණ 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>

CDATA

විශේෂ අක්ෂර පහම CDATA කොටස් වලින් ගැලවිය යුතු නැත :

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

සැකසුම් උපදෙස්

විශේෂ අක්ෂර පහම XML සැකසුම් උපදෙස් වලින් ගැලවිය යුතු නැත :

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

XML එදිරිව HTML

HTML සතුව තමන්ගේම ගැලවීමේ කේත කට්ටලයක් ඇති අතර එමඟින් තවත් අක්ෂර රාශියක් ආවරණය වේ.


37
Ac පැකේරියර්, ඔබේම XML / HTML ගැලවීමේ කේතය ලියන්න එපා කියා මම ඔබෙන් ඉල්ලා සිටිමි. පුස්තකාල ශ්‍රිතයක් භාවිතා කරන්න, නැතහොත් ඔබට විශේෂ නඩුවක් මග හැරෙනු ඇත.
ජේසන්

5
රේඛීය බිඳීම් සඳහාද ඔබ භාවිතා කළ යුතුය & # xA; & # xD; සහ & # x9; ටැබ් සඳහා, ඔබට මෙම අක්ෂර අවශ්‍ය නම්.
radistao

81
ඔබ මේවා සොයා ගැනීම / ප්‍රතිස්ථාපනය කිරීමට යන්නේ නම්, & amp; අනෙක් අය ඉදිරියේ ආදේශ කිරීම.
ඩග්

2
Og ඩග් මම හරියටම එකම දෙය සඳහන් කිරීමට සූදානම්ව සිටියෙමි - නැතහොත් වෙනත් ආදේශ කළ සියලුම චරිත දූෂිත වනු ඇත, සහ වැනි &quot;දේ වෙනස් වනු ඇත&amp;quot;
ජෙරී ඩොජ්

6
විකිපීඩියාවෙන්: "අවසර ලත් සියලුම යුනිකෝඩ් අක්ෂර සංඛ්‍යාත්මක අක්ෂර යොමුවකින් නිරූපණය කළ හැකිය." එබැවින් 5 ට වඩා බොහෝ දේ ඇත
ටිම් කූපර්

94

සමහර විට මෙය උපකාරී වනු ඇත:

XML සහ HTML අක්ෂර වස්තු යොමු ලැයිස්තුව:

SGML, HTML සහ XML ලේඛනවල, තාර්කික ව්‍යුහයන් අක්‍ෂර දත්ත සහ ආරෝපණ අගයන් ලෙස හැඳින්වේ, අනුක්‍රමික අනුපිළිවෙලින් සමන්විත වන අතර, එමඟින් සෑම චරිතයක්ම කෙලින්ම විදහා දැක්විය හැකිය (තමා නියෝජනය කරයි), හෝ අක්ෂර මාලාවක් මගින් නිරූපණය කළ හැකිය, ඒවායින් වර්ග දෙකක් ඇත: සංඛ්‍යාත්මක අක්ෂර යොමු කිරීම සහ අක්ෂර වස්තු යොමු කිරීම. මෙම ලිපියෙන් HTML සහ XML ලේඛන වල වලංගු වන අක්ෂර වස්තු යොමු කිරීම් ලැයිස්තුගත කරයි.

එම ලිපියෙන් පහත දැක්වෙන පූර්ව නිශ්චිත XML ආයතන පහ ලැයිස්තුගත කරයි:

quot  "
amp   &
apos  '
lt    <
gt    >

73

ලෝක ව්‍යාප්ත වෙබ් සම්මේලනයේ (w3C) පිරිවිතරයන්ට අනුව , XML ලේඛනයක ඒවායේ වචනාර්ථයෙන් නොපෙන්විය යුතු අක්ෂර 5 ක් ඇත, ඒවා සලකුණු සලකුණු ලෙස භාවිතා කරන විට හෝ අදහස් දැක්වීමක්, සැකසුම් උපදෙස් හෝ CDATA අංශයක් තුළ හැර . අනෙක් සියලුම අවස්ථාවන්හිදී, පහත දැක්වෙන වගුව අනුව අනුරූප වස්තුව හෝ සංඛ්‍යාත්මක යොමුව භාවිතා කරමින් මෙම අක්ෂර ප්‍රතිස්ථාපනය කළ යුතුය:

Original CharacterXML entity replacementXML numeric replacement
<                              &lt;                                    &#60;                                    
>                              &gt;                                   &#62;                                    
"                               &quot;                               &#34;                                    
&                              &amp;                               &#38;                                    
'                               &apos;                               &#39;                                    

& Apos; හැර, ඉහත සඳහන් ආයතන HTML හි ද භාවිතා කළ හැකි බව සලකන්න . , එය XHTML 1.0 සමඟ හඳුන්වා දී ඇති අතර එය HTML 4 හි ප්‍රකාශයට පත් නොකෙරේ. මේ හේතුව නිසා සහ රෙට්රෝ-ගැළපුම සහතික කිරීම සඳහා, XHTML පිරිවිතර & # 39; වෙනුවට.


14
එක්ස්එම්එල් විසින් එම ආයතන පහම පූර්ව නිශ්චය කරයි, නමුත් එම අක්ෂර පහෙන් එකක්වත් ඒවායේ වචනාර්ථයෙන් භාවිතා කළ නොහැකි බව නියත වශයෙන්ම සඳහන් නොකරයි. <සහ & සෑම තැනකින්ම පැන යා යුතුය (CDATA හැර). "සහ 'ආරෝපණ අගයන්ගෙන් පමණක් ගැලවිය යුතු අතර, අනුරූප උපුටා දැක්වීමේ චරිතය එක හා සමාන නම් පමණි. තවද> කිසි විටෙකත් සැබවින්ම
ගැලවිය

3
ඉහත ලියා ඇති පරිදි, <> "& 'සලකුණු පරිසීමක ලෙස භාවිතා කරන විට හෝ අදහස් දැක්වීමක්, සැකසුම් උපදෙස් හෝ සීඩීඒටීඒ අංශයක් තුළ පැන යා යුතු නැත. එනම් ඔබ <> එක්ස්එම්එල් ටැගයක් ලෙස භාවිතා කරන විට ඔබ එයින් ගැලවෙන්නේ නැත අදහස් දැක්වීම සඳහා එකම දෙය (ඔබ එක්ස්එම්එල් ගොනුවක සහ අදහස් දැක්වූ පේළියකින් පැන යනවාද? ඔබට අවශ්‍ය නැත, ඔබ එසේ නොකළහොත් ඔබේ එක්ස්එම්එල් තවමත් වලංගු වේ) මෙය නිල නිර්දේශයන්හි පැහැදිලිව දක්වා ඇත W3C විසින් XML .
Albz

7
@ShaunMcCance >එය පහත සඳහන් නම් පලා කළ යුතුය ]]එය කොටසක් විය කිරීම රිසි වෙනවා මිස, අන්තර්ගතය තුළ ]]>ඇති CDATA කොටස අවසානය දක්වයි බව පරිසීමකය.
ලී ඩී

2
අක්ෂර වින්‍යාස කරන්නෙකු නොව, නමුත් මෙම චරිත අන්තර්ගතයට සුදුසුකම් ලැබිය යුතු යැයි පැවසීම වැරදිය. W3.org/TR/REC-xml/#NT-CharData හි 2.4 කොටස බලන්න . එහි ටීඑල්; ඩීආර් අනුවාදය වන්නේ චාර්ඩටා මූලද්‍රව්‍ය අන්තර්ගතයේ, & amp; සහ & lt; සෑම විටම හිමිකම් ලැබිය යුතුය. & Gt; අක්ෂර අක්ෂරයට හිමිකම් ලැබිය හැකිය, නමුත් එය වචනාර්ථයෙන් “]]>” ලෙස දිස්වන විට විය යුතුය. එසේ නොවුවහොත් එය CDATA කොටස අවසන් වන ලෙස කියවනු ලැබේ. තනි උපුටා දැක්වීම් සහ ද්විත්ව උපුටා දැක්වීම් සඳහා, ඔබට අවශ්‍ය නම් ඔබට පැන යා හැකිය. මූලද්‍රව්‍ය ඇතුළත චාර්ඩටා සඳහා එයයි. XML හි අනෙකුත් සංරචක වලට වෙනත් නීති ඇත.
ස්කයි --- කැප්ටන්

52

ටැග් සහ ගුණාංග සඳහා අක්ෂර ගැලවීම වෙනස් වේ.

ටැග් සඳහා:

 < &lt;
 > &gt; (only for compatibility, read below)
 & &amp;

ගුණාංග සඳහා:

" &quot;
' &apos;

සිට අක්ෂර දත්ත හා සලකුණුබස :

සලකුණු විස්තාරක ලෙස භාවිතා කරන විට හෝ අදහස් දැක්වීමක්, සැකසුම් උපදෙස් හෝ සීඩීඒටීඒ අංශයක් හැර ඇම්පියර්සෑන්ඩ් අක්ෂරය (&) සහ වම් කෝණ වරහන (<) ඒවායේ වචනාර්ථයෙන් නොපෙන්විය යුතුය. ඒවා වෙනත් තැනකට අවශ්‍ය නම්, සංඛ්‍යාත්මක අක්ෂර යොමු කිරීම් හෝ පිළිවෙලින් "& amp;" සහ "& lt;" යන නූල් භාවිතා කර ඒවායින් ගැලවිය යුතුය. සෘජු කෝණ වරහන (>) "& gt;" නූල භාවිතා කර නිරූපණය කළ හැකි අතර, අනුකූලතාව සඳහා "& gt;" හෝ අක්ෂර යොමුවකින් එය ගැලවිය යුතුය. CDATA කොටසක අවසානය සලකුණු නොකරන විට.

ආරෝපණ අගයන් තනි සහ ද්විත්ව උපුටා දැක්වීම් දෙකම අඩංගු වීමට ඉඩ දීම සඳහා, අපෝස්තලාපය හෝ තනි-උපුටා දැක්වීමේ අක්‍ෂරය (') "& apos;" ලෙසද, ද්විත්ව-උපුටා දැක්වීමේ අක්‍ෂරය (")" & quot; ".


1
මෙයින් ගම්‍ය වන්නේ ගුණාංග සඳහා උපුටා දැක්වීම් පමණක්
ගැලවිය

44

පැරණි, පොදුවේ අසනු ලබන ප්‍රශ්නයකට නව, සරල පිළිතුරක් ...

සරල කළ XML ගැලවීම (ප්‍රමුඛතාවය, 100% සම්පූර්ණයි)

  1. සෑම විටම (මතක තබා ගැනීමට 90% වැදගත්)

    • පැන <ලෙස &lt;මිස <ආරම්භ වේ <tag/>.
    • පැන &ලෙස &amp;නම් &වූ පටන් ගෙන ඇත &entity;.
  2. ගුණාංග අගය (මතක තබා ගැනීමට 9% වැදගත්)

    • attr=" ''ද්විත්ව උපුටා දැක්වීම් තුළ තනි මිල ගණන් හරි."
    • attr=' ""තනි උපුටා දැක්වීම් තුළ ද්විත්ව මිල ගණන් හරි.'
    • පැන "ලෙස &quot;හා 'ලෙස &apos;වෙනත් ආකාරයකින්.
  3. අදහස් , CDATA සහ සැකසුම් උපදෙස් (මතක තබා ගැනීමට 0.9% වැදගත්)

    • <!--තුළ අදහස් --> කිසිවක් පලා කිරීමට නමුත් කිසිදු --කොන්දේසියකින් ඉඩ දෙනු ලැබේ.
    • <![CDATA[තුළ CDATA ]]> කිසිවක් පලා කළ යුතු වේ, නමුත් කිසිදු ]]>කොන්දේසියකින් ඉඩ දෙනු ලැබේ.
    • <?PITargetතුළ PIs ?> කිසිවක් පලා කළ යුතු වේ, නමුත් කිසිදු ?>කොන්දේසියකින් ඉඩ දෙනු ලැබේ.
  4. එසෝටෙරිකා (මතක තබා ගැනීමට 0.1% වැදගත්)

    • පැන ]]>ලෙස ]]&gt;නම් ]]>වූ CDATA කොටස අවසන් කර ඇත.
      (මෙම නියමය පොදුවේ අක්ෂර දත්ත සඳහා අදාළ වේ - CDATA කොටසකට පිටතින් වුවද.)

සඳහන් ]]>කළ යුතු තවත් එක් රීතියක්: ]]&gt;CDATA කොටසක නොමැති විට පවා පැන යා යුතුය . බව සාක්ෂාත් කර ඇති පහසුම ක්රමය විය හැක හැම විටම පැන >ලෙස &gt;.
මයිකල් කේ

ස්තූතියි, මයිකල්කේ. මම ඔබගේ ප්‍රයෝජනවත් සටහන ඇතුළත් කර ඇති ]]> නමුත් එය > සැමවිටම ගැලවී යා යුතු යැයි යෝජනා කරනවාට වඩා එය එසෝටෙරිකා වෙත යොමු කිරීමට තෝරාගෙන ඇත (එය ඔබ දන්නා පරිදි විය යුතු නොවේ). මෙහි මගේ ඉලක්කය වන්නේ XML ගැලවීමේ නීති පහසුවෙන් මතක තබා ගැනීම සහ 100% නිවැරදි කිරීමයි.
kjhughes

පිළිගත් එක් සඳහනක් ඇතුළුව ඉහත පිළිතුරු වල අක්ෂර පහම ලක්ෂණ තුළින් ගැලවිය යුතුය. ඔබේ පිළිතුර තාර්කිකව නිවැරදි යැයි පෙනෙන බැවින් ඔබ පවසන දෙයට පිටුබලය දීමට ඔබට XML ප්‍රමිතිය පිළිබඳ සඳහනක් තිබේද?
රෝමානු සුසි

1
Oman රෝමන්සුසි: ඔව්, වෙනත් බොහෝ පිළිතුරු වල නිල XML බීඑන්එෆ් හි ඇසීම, වැරදි අර්ථකථනය හෝ වරදවා වටහා ගැනීම මත පදනම් වූ දෝෂ හෝ සාමාන්‍යකරණයන් ("ආරක්ෂිත ක්‍රමය ...") අඩංගු වේ. මගේ පිළිතුර (අ) W3C XML නිර්දේශයෙන් 100% යුක්ති සහගත ය; නිල බී.එන්.එෆ්. හා (ආ) සංක්ෂිප්ත, තාර්කික හා පහසුවෙන් මතක තබා ගත හැකි ප්‍රගතියක් තුළ සංවිධානය කර ඇති බොහෝ සම්බන්ධිත යොමු බලන්න.
kjhughes

@RomanSusi: "සියලු චරිත පහක් ගුණාංග තුල පලා කළ යුතු" බව නිශ්චිත ප්රකාශයක් බෑවුම් සහිත, මඟ පෙන්වීම සඳහා නිල BNF පාලනය විසින් සහාය නොදක්වන AttValueසබැඳියක් ඔස්සේ මගේ පිළිතුර උපුටා දක්වා 2. ලක්ෂණය අගයන් .
kjhughes

26

පොදුවේ දන්නා අක්ෂර පහට අමතරව [<,>, &, ", සහ '], මම සිරස් ටැබ් අක්ෂරයෙන් (0x0B) ද බේරෙන්නෙමි.එය වලංගු UTF-8, නමුත් වලංගු XML 1.0 නොවේ, සහ බොහෝ පුස්තකාල පවා (ඉතා අතේ ගෙන යා හැකි (ANSI C) පුස්තකාලය libxml2 ඇතුළුව ) එය මඟ හැරී නිහ ly ව අවලංගු XML ප්‍රතිදානය කරයි.


11

සංක්ෂිප්ත: XML, පැන යාම

පූර්ව නිශ්චිත ආයතන පහක් ඇත:

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

"අවසර ලත් සියලුම යුනිකෝඩ් අක්ෂර සංඛ්‍යාත්මක අක්ෂර යොමුවකින් නිරූපණය කළ හැකිය." උදාහරණයක් වශයෙන්:

&#20013;

බොහෝ පාලන අක්ෂර සහ අනෙකුත් යුනිකෝඩ් පරාසයන් විශේෂයෙන් බැහැර කර ඇත, එයින් අදහස් වන්නේ (මම හිතන්නේ) ඒවා පැන යාමට හෝ සෘජුව සිදුවිය නොහැක:

XML හි වලංගු අක්ෂර


3

එය සන්දර්භය මත රඳා පවතී. අන්තර්ගතය සඳහා, එය < සහ & , සහ ]]> (එක් අක්ෂරයක් වෙනුවට තුනකින් යුත් නූලක් වුවද).

ආරෝපණ අගයන් සඳහා, එය < , & , " , සහ ' වේ.

CDATA සඳහා, එය ]]> .


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.