Karakter apa yang harus lolos dalam dokumen XML, atau di mana aku bisa menemukan daftar tersebut?
Jika anda menggunakan aplikasi yang sesuai kelas atau perpustakaan, mereka akan melakukan melarikan diri untuk anda. Banyak XML masalah yang disebabkan oleh rangkaian string.
Hanya ada lima:
" "
' '
< <
> >
& &
Escaping karakter tergantung pada di mana karakter khusus yang digunakan.
Contoh-contoh yang dapat divalidasi di W3C Markup Validation Service.
Cara yang aman adalah untuk melarikan diri semua lima karakter dalam teks, namun, tiga karakter "
, '
dan >
perlu't akan lolos dalam teks:
<?xml version="1.0"?>
<valid>"'></valid>
Cara yang aman adalah untuk melarikan diri semua lima karakter dalam atribut, namun, >
karakter perlu't akan lolos dalam atribut:
<?xml version="1.0"?>
<valid attribute=">"/>
The '
karakter perlu't akan lolos dalam atribut jika kutipan "
:
<?xml version="1.0"?>
<valid attribute="'"/>
Demikian juga, "
perlu't akan lolos dalam atribut jika kutipan '
:
<?xml version="1.0"?>
<valid attribute='"'/>
Semua 5 karakter khusus tidak akan lolos dalam komentar:
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
Semua 5 karakter khusus tidak akan lolos dalam CDATA bagian:
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
Semua 5 karakter khusus tidak akan lolos dalam XML pemrosesan instruksi:
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
HTML memiliki set sendiri melarikan diri kode yang mencakup lebih banyak karakter.
Mungkin ini akan membantu:
Daftar XML dan HTML karakter entitas referensi:
Di SGML, HTML dan XML dokumen, konstruksi logis yang dikenal sebagai karakter data dan nilai-nilai atribut yang terdiri dari urutan-urutan dari karakter, di mana masing-masing karakter dapat terwujud secara langsung (mewakili dirinya sendiri), atau dapat diwakili oleh serangkaian karakter disebut referensi karakter, yang ada dua jenis: numerik referensi karakter dan karakter entitas referensi. Artikel ini berisi daftar karakter entitas referensi yang tidak valid dalam HTML dan XML dokumen.
Yang daftar artikel berikut lima yang telah ditetapkan entitas XML:
quot "
amp &
apos '
lt <
gt >
Menurut spesifikasi dari World Wide Web Consortium (w3C), ada 5 karakter yang tidak muncul dalam bentuk literal dalam dokumen XML, kecuali bila digunakan sebagai markup pembatas atau hanya komentar, pemrosesan instruksi, atau bagian CDATA. Dalam semua kasus lain, karakter ini harus diganti baik menggunakan sesuai entitas atau numerik referensi sesuai dengan tabel berikut:
Karakter AsliXML badan penggantianXML numerik penggantian
< < <
> > >
" " "
& & &
' ' '
Perhatikan bahwa entitas tersebut dapat digunakan juga dalam HTML, dengan pengecualian ", yang diperkenalkan dengan XHTML 1.0 dan tidak dinyatakan dalam HTML 4. Untuk alasan ini, dan untuk memastikan retro-kompatibilitas, XHTML spesifikasi merekomendasikan penggunaan ' sebagai gantinya.
Escaping karakter yang berbeda untuk tag dan atribut.
Untuk kategori:
< <
> > (only for compatibility, read below)
& &
Untuk atribut:
" "
' '
http://www.w3.org/TR/2008/REC-xml-20081126/#syntax
karakter ampersand (&) dan braket sudut kiri (<) tidak harus muncul dalam bentuk literal, kecuali bila digunakan sebagai markup pembatas, atau hanya komentar, pemrosesan instruksi, atau bagian CDATA. Jika mereka dibutuhkan di tempat lain, mereka harus melarikan diri dengan menggunakan numerik referensi karakter atau string " & " dan " < " masing-masing. Sudut yang tepat bracket (>) dapat direpresentasikan dengan menggunakan string " > ", dan harus, untuk kompatibilitas, dapat melarikan diri menggunakan " > " atau referensi karakter ketika muncul dalam string " ]]> " dalam kandungan, ketika string itu tidak menandai akhir dari CDATA bagian.
Untuk memungkinkan nilai-nilai atribut untuk mengandung tanda kutip tunggal dan ganda, apostrophe atau single-quote (karakter') dapat direpresentasikan sebagai " " ", dan double-quote karakter (") sebagai " " ".
Baru, jawaban sederhana atas tua, sering mengajukan pertanyaan...
<
sebagai <
kecuali <
mulai <tag/>
.&
sebagai &
kecuali &
memulai sebuah &badan;
.attr="
'
tanda kutip Tunggal'
ok dalam tanda kutip ganda."
attr='
"
tanda kutip Ganda"
ok dalam tanda kutip tunggal.'
"
sebagai "
dan '
sebagai "
jika tidak.<!--
Dalam komentar -->
tidak ada yang dapat melarikan diri, tetapi tidak ada --
string yang diizinkan. <![CDATA[
Dalam CDATA ]]>
tidak ada yang bisa lolos, tapi tidak ada ]]>
string yang diizinkan.<?PITarget
Dalam PIs ?>
tidak ada yang bisa lolos, tapi tidak ada ?>
string yang diizinkan.]]>
sebagai ]]>
kecuali ]]>
berakhir CDATA section. selain dikenal lima karakter [<, >, &, ", '] saya juga akan melarikan diri vertikal karakter tab (0x0B). Hal ini valid UTF-8, tapi tidak valid XML 1.0, dan bahkan banyak perpustakaan (termasuk libxml2) nona itu dan diam-diam output XML tidak valid.
Diringkas dari: http://en.wikipedia.org/wiki/XML#Escaping
Ada lima yang telah ditetapkan badan:
< represents "<"
> represents ">"
& represents "&"
' represents '
" represents "
"Semua diizinkan karakter Unicode dapat diwakili dengan karakter numerik referensi. " misalnya:
中
Sebagian besar kontrol dan karakter unicode lainnya berkisar khusus dikecualikan, artinya (saya pikir) mereka dapat't terjadi baik melarikan diri atau langsung:
Hanya < dan & dituntut untuk bisa lolos jika harus diperlakukan data karakter dan tidak markup: