- <? Xml version = “1.0” encoding = “utf-8”?> Anlamı


104

XML konusunda yeniyim ve temelleri anlamaya çalışıyorum. Aşağıdaki satırı "Öğrenme XML" bölümünde okudum, ancak benim için hala net değil. Birisi beni bu temel bilgileri net bir şekilde açıklayan bir kitaba veya web sitesine yönlendirebilir mi?

Gönderen Öğrenme XML :

XML bildirimi, belgenin en genel özelliklerinden bazılarını açıklayarak, XML işlemciye bu belgeyi yorumlamak için bir XML ayrıştırıcıya ihtiyacı olduğunu söyler.

Ne anlama geliyor?

Parçayı anlıyorum xml version- hem doc hem de doc kullanıcısı aynı XML sürümünde "konuşmalı". Ama encodingkısım ne olacak ? Bu neden gerekli?



Yanıtlar:


128

"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, 162iki 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 <?xmliç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.


9
"Başlığın kendisi ASCII kodlamasını kullanıyor": XML bildirimine atıfta bulunduğunuzu düşünüyorum. Belgenin geri kalanı gibi kodlanmıştır; UTF-16 ya da ne değil. Bir XML işlemci, kodlama özelliğini okuyana kadar birkaç deneme yapabilir.
Tom Blodget

1
Önsöz / prologun UTF-8 altında kodlanacağı ve ayrıştırıcıya kalan baytların (gerçek XML belgesi) doğru kodlamaya nasıl dönüştürüleceğini söylediği izlenimine kapılmıştım. Yine yanlış! :-)
Kelly Beard


26

Tüm XML belgelerinde bir XML bildirimi gerekli değildir; ancak XHTML belge yazarlarının tüm belgelerinde XML bildirimleri kullanmaları şiddetle tavsiye edilir. Belgenin karakter kodlaması varsayılan UTF-8 veya UTF-16 dışında olduğunda ve daha yüksek seviyeli bir protokol tarafından kodlama belirlenmediğinde böyle bir bildirim gereklidir. İşte bir XHTML belgesi örneği. Bu örnekte, XML bildirimi yer almaktadır.

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE html 
 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Virtual Library</title>
  </head>
  <body>
    <p>Moved to <a href="http://example.org/">example.org</a>.</p>
 </body>
</html>

Lütfen XML için W3 standartlarına bakın .


4
xml, xhtml'ye bağlanır. xml w3.org/TR/xml'e bağlanmak mı istediniz yoksa bağlantıya xhtml adını vermek mi istediniz?
jrwren

Xhtml, xml belgelerine başvurur. İyi biçimlendirilmiş xml için Belge Türü Beyanı gerekli değildir.
xvan

"Lütfen XML için W3 standartlarına bakın." IOW, uzun ve uzun bir belge olan sss'yi okuyun. İnsanlar neden "?" yapar ve neden orada ???
Blessed Geek

3

Bu, XML isteğe bağlı önsözdür.

  • version="1.0" bu dosyanın uyumlu olduğu XML standardı olduğu anlamına gelir
  • encoding="utf-8" dosyanın UTF-8 Unicode kodlaması kullanılarak kodlandığı anlamına gelir


2

Birisi beni bu temel bilgileri net bir şekilde açıklayan bir kitaba veya web sitesine yönlendirebilir mi?

Bu XML Eğitimini örneklerle kontrol edebilirsiniz .

Peki ya kodlama kısmı? Bu neden gerekli?

W3C, kodlama hakkında açıklama sağlar :

"XML ve HTML 4.0 için belge karakter kümesi Unicode'dur (ISO 10646). Bu, HTML tarayıcılarının ve XML işlemcilerin dahili olarak Unicode kullanmış gibi davranması gerektiği anlamına gelir. Ancak bu, belgelerin Unicode'da iletilmesi gerektiği anlamına gelmez. İstemci ve sunucu kodlama üzerinde hemfikir olduğu sürece, Unicode'a dönüştürülebilen herhangi bir kodlamayı kullanabilirler ... "


-1

Belge haritasındaki XML bildirimi aşağıdakilerden oluşur:

The version number, ?xml version="1.0"?. 

Bu zorunludur. Sayı, XML'in gelecekteki sürümleri için değişebilse de, 1.0 güncel sürümdür.

Kodlama beyanı,

encoding="UTF-8"?

Bu isteğe bağlıdır. Kullanılırsa, kodlama bildirimi XML bildirimindeki sürüm bilgilerinden hemen sonra görünmeli ve mevcut bir karakter kodlamasını temsil eden bir değer içermelidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.