XML belgelerinde hangi karakterler kaçmalı veya böyle bir listeyi nerede bulabilirim?
XML belgelerinde hangi karakterler kaçmalı veya böyle bir listeyi nerede bulabilirim?
Yanıtlar:
Eğer uygun bir sınıf veya kütüphane kullanırsanız, sizin için kaçmayı yapacaklardır. Birçok XML sorununa dize birleştirme neden olur.
Sadece beş tane var:
" "
' '
< <
> >
& &
Kaçan karakterler özel karakterin kullanıldığı yere bağlıdır.
Örnekler W3C İşaretleme Doğrulama Hizmetinde doğrulanabilir .
Güvenli yol, metindeki beş karakterin hepsinden kaçmaktır. Ancak üç karakter "
, '
ve >
ihtiyaç değil metinde öncelenmelidir:
<?xml version="1.0"?>
<valid>"'></valid>
Güvenli yol, niteliklerdeki beş karakterin hepsinden kaçmaktır. Ancak, >
karakterin özniteliklerden kaçmasına gerek yoktur:
<?xml version="1.0"?>
<valid attribute=">"/>
'
Tırnak ise karakter özelliklerinde kaçmış gerek yoktur "
:
<?xml version="1.0"?>
<valid attribute="'"/>
Benzer şekilde, "
tırnak işaretleri şöyle ise özelliklerden kaçmak gerekmez '
:
<?xml version="1.0"?>
<valid attribute='"'/>
Tüm beş özel karakterler olmamalıdır yorumlarda öncelenmelidir:
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
Beşi özel karakterler olmamalıdır içinde öncelenmelidir CDATA bölümleri:
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
Tüm beş özel karakterler olmamalıdır XML işleme talimatlarında öncelenmelidir:
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
HTML'nin çok daha fazla karakteri kapsayan kendi kaçış kodları kümesi vardır .
"
değiştirilecek&quot;
Belki de bu yardımcı olacaktır:
XML ve HTML karakteri varlık referanslarının listesi :
SGML, HTML ve XML belgelerinde, karakter verileri ve nitelik değerleri olarak bilinen mantıksal yapılar, her karakterin doğrudan tezahür edebileceği (kendini temsil eden) veya karakter referansı adı verilen bir dizi karakterle temsil edilebildiği karakter dizilerinden oluşur. bunlardan iki türü vardır: sayısal karakter başvurusu ve karakter varlığı başvurusu. Bu makalede, HTML ve XML belgelerinde geçerli olan karakter varlığı başvuruları listelenmektedir.
Bu makalede aşağıdaki beş önceden tanımlanmış XML varlığı listelenmiştir:
quot "
amp &
apos '
lt <
gt >
World Wide Web Konsorsiyumu'nun (w3C) teknik özelliklerine göre, biçimlendirme sınırlayıcıları veya yorum, işleme talimatı veya CDATA bölümü içinde kullanılması dışında, XML belgesinde değişmez formlarında görünmemesi gereken 5 karakter vardır. . Diğer tüm durumlarda, bu karakterlerin aşağıdaki tabloya göre ilgili varlık veya sayısal başvuru kullanılarak değiştirilmesi gerekir:
Original CharacterXML entity replacementXML numeric replacement
< < <
> > >
" " "
& & &
' ' '
Yukarıda belirtilen varlıkların & apos; hariç, HTML'de de kullanılabileceğine dikkat edin . , XHTML 1.0 ile tanıtıldı ve HTML 4'te bildirilmedi. Bu nedenle ve geriye dönük uyumluluk sağlamak için XHTML spesifikasyonu & # 39; yerine.
>
takip ediliyorsa kaçmalıdır . ]]
]]>
Kaçan karakterler etiketler ve özellikler için farklıdır.
Etiketler için:
< <
> > (only for compatibility, read below)
& &
Özellikler için:
" "
' '
Gönderen Karakter Veriler ve İşaretleme :
Ve işareti karakteri (&) ve sol açılı ayraç (<), biçimlendirme sınırlayıcılar olarak veya bir yorum, işleme talimatı veya bir CDATA bölümü dahilinde kullanıldığı durumlar dışında, tam anlamıyla görünmemelidir. Başka bir yerde ihtiyaç duyulursa, ya sayısal karakter referansları ya da sırasıyla "& amp;" ve "<lt" dizeleri kullanılarak kaçılmalıdır. Sağ açılı ayraç (>), "& gt;" dizesi kullanılarak temsil edilebilir ve uyumluluk için içerikte "& gt;" veya bir karakter başvurusu kullanılarak ">]>>" dizesinde göründüğünde, bu dize bir CDATA bölümünün sonunu işaretlemiyorsa.
Özellik değerlerinin hem tek hem de çift tırnak içermesine izin vermek için kesme işareti veya tek tırnak karakteri (') "&"; çift tırnak karakteri (")" & quot; ".
Eski, sık sorulan bir soruya yeni, basitleştirilmiş cevap ...
Her zaman (hatırlanması% 90 önemli)
Özellik Değerleri (hatırlanması gereken% 9 önemli)
attr="
'
Tek tırnak '
çift tırnak içinde tamam."
attr='
"
Çift tırnak "
tek tırnak içinde tamam.'
"
olarak "
ve '
sıra '
aksi.Yorumlar , CDATA ve İşleme Talimatları (hatırlanması gereken% 0.9 önemli)
<!--
Yorumların içinde -->
hiçbir şeyden kaçınmak zorunda değildir, ancak --
dizeye izin verilmez.<![CDATA[
CDATA içinde ]]>
hiçbir şeyden kaçınmak zorunda değildir, ancak ]]>
dizelere izin verilmez.<?PITarget
İçinde PI'lerin ?>
şey kaçmış olması gerekir, ancak hiçbir ?>
dizeleri izin verilir.Ezoterik (hatırlanması gereken% 0.1 önemli)
]]>
olarak ]]>
sürece ]]>
CDATA bölümü sona eriyor. ]]>
kaçılması gereklidir ]]>
bile değil bir CDATA bölümü. Bunu başarmanın en kolay yolu her zaman>
olduğu gibi kaçmak olabilir >
.
]]>
ama >
her zaman kaçtı (ki bildiğiniz gibi olması gerekmez) önermek yerine esoterica için onu temsil etmeyi seçti . Buradaki amacım XML'den kaçan kuralları kolayca hatırlamak ve % 100 doğru yapmak .
AttValue
, 2. Öznitelik Değerleri bağlantısını kullanarak cevabımda atıfta bulunulan resmi BNF kuralı tarafından desteklenmeyen özensiz rehberliktir .
Yaygın olarak bilinen beş karaktere [<,>, &, "ve '] ek olarak, dikey sekme karakterinden (0x0B) de kaçarım. Geçerli UTF-8, ancak geçerli XML 1.0 ve hatta birçok kütüphane değil (son derece portatif (ANSI C) kitaplığı libxml2 dahil ) onu özlüyor ve sessizce geçersiz XML çıktısı veriyor.
Kısaltılmış: XML, Kaçan
Önceden tanımlanmış beş varlık vardır:
< represents "<"
> represents ">"
& represents "&"
' represents '
" represents "
"İzin verilen tüm Unicode karakterler sayısal bir karakter başvurusuyla temsil edilebilir." Örneğin:
中
Kontrol karakterlerinin ve diğer Unicode aralıklarının çoğu özellikle hariç tutulur, yani (bence) kaçar veya doğrudan gerçekleşemezler:
Bu koşullara bağlıdır. İçerik için < ve & , ve ]]> (bir karakter yerine üç dize olsa da).
Özellik değerleri için < , & , " ve 'şeklindedir .
CDATA için ]]> .
Yalnızca <
ve &
karakter verisi olarak muamele edilecek ve işaretleme yapılmayacaksa kaçmaları gerekir:
<company>AT&T</company>