"Kodlama" özelliğini anlamak için, baytlar ve karakterler arasındaki farkı anlamanız gerekir .
Baytları 0 ile 255 arasındaki sayılar olarak düşünün, oysa karakterler "a", "1" ve "Ä" gibi şeylerdir. Mevcut olan tüm karakter kümesine karakter kümesi denir .
Her karakter, kendisini temsil etmek için kullanılan bir veya daha fazla bayt dizisine sahiptir; bununla birlikte, baytların tam sayısı ve değeri kullanılan kodlamaya bağlıdır ve birçok farklı kodlama vardır.
Çoğu kodlama, karakter başına tek bir bayt olan (aslında sadece 7 bit) ve ABD İngilizcesinde kullanılan birçok yaygın karakter dahil 128 karakter içeren ASCII adı verilen eski bir karakter kümesine ve kodlamaya dayanmaktadır.
Örneğin, burada ASCII karakter kümesinde 60 ila 65 arasındaki değerlerle gösterilen 6 karakter vardır.
Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║ Character ║
╠══════╬══════════════║
║ 60 ║ < ║
║ 61 ║ = ║
║ 62 ║ > ║
║ 63 ║ ? ║
║ 64 ║ @ ║
║ 65 ║ A ║
╚══════╩══════════════╝
Tam ASCII kümesinde, kullanılan en düşük değer sıfırdır ve en yüksek 127'dir (bunların her ikisi de gizli kontrol karakterleridir).
Ancak, temel ASCII'nin sağladığından daha fazla karaktere ihtiyaç duymaya başladığınızda (örneğin, aksanlı harfler, para birimi sembolleri, grafik sembolleri vb.), ASCII uygun değildir ve daha kapsamlı bir şeye ihtiyacınız vardır. Daha fazla karaktere (farklı bir karakter setine) ihtiyacınız var ve 128 karakter tüm karakterleri sığdırmak için yeterli olmadığından farklı bir kodlamaya ihtiyacınız var. Bazı kodlamalar bir bayt (256 karakter) veya altı bayta kadar teklif veriyor.
Zamanla birçok kodlama oluşturuldu. Windows dünyasında CP1252 veya ISO-8859-1 vardır, oysa Linux kullanıcıları UTF-8'i tercih etme eğilimindedir. Java, yerel olarak UTF-16 kullanır.
Bir kodlamadaki bir karakter için bir bayt değerleri dizisi, başka bir kodlamada tamamen farklı bir karakteri temsil edebilir veya hatta geçersiz olabilir.
Örneğin, ISO 8859-1 , â değer bir bayt ile temsil edilir 226
, oysa UTF-8 iki bayttır 195, 162
. Ancak, içinde ISO 8859-1 , 195, 162
iki karakter olurdu ¢, Ã .
XML'i bir karakter dizisi değil, bir bayt dizisi olarak düşünün.
XML'i alan sistemin baytları gördüğünü hayal edin 195, 162
. Bunların hangi karakter olduğunu nereden biliyor?
Sistemin bu baytları gerçek karakterler olarak yorumlaması (ve böylece onları görüntülemesi veya başka bir kodlamaya dönüştürmesi) için XML'de kullanılan kodlamayı bilmesi gerekir.
En yaygın kodlamalar, temel alfabetik karakterler ve semboller olduğu sürece ASCII ile uyumlu olduğundan, bu durumlarda, deklarasyonun kendisi, kodlamanın ne olduğunu söylemek için yalnızca ASCII karakterlerini kullanmaktan kurtulabilir. Diğer durumlarda, ayrıştırıcı, bildirimin kodlamasını denemek ve anlamalıdır. Deklarasyonun başladığını bildiği <?xml
için bunu yapmak çok daha kolay.
Son olarak, version
öznitelik şu anda iki tane bulunan XML sürümünü belirtir (bkz. Wikipedia XML sürümleri . Sürümler arasında küçük farklılıklar vardır, bu nedenle bir XML ayrıştırıcısının neyle uğraştığını bilmesi gerekir. Çoğu durumda (İngilizce için) yine de), sürüm 1.0 yeterlidir.