Neden XHTML5 değil?


53

Yani, HTML5 Büyük Adım İleri, söylendi. Bildiğim kadarıyla attığımız son adım, XHTML'nin tanıtılmasıydı. Avantajları açıktı: sadelik, kesinlik, standart XML ayrıştırıcıları ve jeneratörleri web sayfalarıyla çalışmak için kullanma becerisi vb.

Ne kadar garip ve sinir bozucu, o zaman, HTML5 hepsini geri alır: bir kez daha standart olmayan bir sözdizimi ile çalışıyoruz; bir kez daha tarihi bagaj ve ayrıştırma karmaşıklığı ile uğraşmak zorundayız; bir kez daha standart XML kütüphanelerimizi, ayrıştırıcıları, jeneratörleri veya transformatörleri kullanamıyoruz; XML'in getirdiği tüm avantajlar (genişletilebilirlik, ad alanları, standardizasyon vb.), W3C'nin on yıldan beri iyi nedenlerle zorlamak için harcadığı avantajlar kayboldu.

Güzel, biz XHTML5'e sahibiz, ancak HTML5 kodlamasında olduğu gibi popülerlik kazanmamış gibi görünüyor. Örneğin bu SO soruya bakınız . HTML5 belirtimi bile, HTMLHT'nin, XHTML5 değil, "çoğu yazar için önerilen biçimdir" olduğunu söylüyor.

Gerçeklerim yanlış mı? Aksi halde, neden bu şekilde hisseden tek ben? Neden insanlar HTML5'i XHTML5 üzerinden seçiyor?


6
+1 HTML5'teki tüm XML avantajlarının kaybına uğrayan tek kişi ben değilim.
Arseni Mourzenko

Güzel bir soru sormak, iyi koymak.
Konrad Rudolph

1
Umarım HTML5'teki tüm XML dezavantajlarının kaybından memnun olan tek kişi ben değilim. Örneğin, geçerli HTML5'i geçerli XHTML ile karşılaştıralım. HTML5:, <!DOCTYPE html>Hello WorldXHTML:<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"><html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><title></title></head><body>Hello World</body></html>
zzzzBov

@zzzzBov, kesinlikle konum değil memnun olan bir tek, ve ben ilk etapta bu soru soruldu yüzden. Ayrıca: cidden yazmazsın <!DOCTYPE html>Hello World, değil mi? Bunu bu doğrulayıcıda dene .
jameshfisher

1
@eegg, görünüşe göre üzerinde spec okumadığınız opsiyonel başlangıç etiketleri ben ciddi çünkü olurdu yazma <!DOCTYPE html>Hello World!mükemmel geçerli HTML5 yöntem olduğu. Daha kısa belgeler, genel giderler için daha az bant genişliği anlamına gelir; bu, büyük şirketler için önemli tasarruflara eşittir (google’ın www.google.com için ne gönderdiğini gördünüz mü?).
zzzzBov

Yanıtlar:


25

Buraya Nasıl Geldik? . Mark Pilgrim, HTML5'e kadar mükemmel ve kısa bir HTML geçmişi sunar.

Temelde, benim anladığım kadarıyla, birçok web sayfasının XHTML'nin "X" inden faydalanmadığı, çünkü bunun için uygun MIME tipini belirlemedikleri.


18
Evet. Bu hikayenin özeti, "Hey, kimse şartnameye uymuyor. Belki de insanların istedikleri herhangi bir hata yapabileceklerini belirterek şartnameye uymalarını sağlayabiliriz. Sonunda tüm belgelerimiz hatasız olacak. ve standartlara uyumlu. " Hiç kimsenin şartnamelere saygı göstermediği varsayımına dayanarak bir şartname yazmanın hiçbir yararı olamaz.
jameshfisher

1
@ eeeg, son satırınız gerçeğe karşı cehaletinizi gösterir. Çok şey var ki, kimsenin mükemmel olmadığını varsaymaktan çoktan geldi . "Herhangi bir hata yaparsanız, her şey bozulur" demesi yerine "bunun yerine", "bu tür bir hata yaparsanız] o zaman [bu sonuç] ne olması gerektiğidir" diyor. % 100 doğru heceleme, noktalama ve dilbilgisi yayınlanmaları için raflarda ne kadar kitap olurdu?
zzzzBov

6
@zzzzBov, yayınlanan kitaplarla analojiniz garip. Bir HTML ayrıştırıcısı neden bir sözdizimi hatasının bir hata mesajı ile karşılandığı [burada başka bir dil] için ayrıştırıcıdan daha bağışlayıcı olmalıdır? C derleyicilerimiz, bozuk sözdizimini sessizce yeniden yorumlamak için ellerinden geleni yapsalardı, kaosun olduğunu hayal edin.
jameshfisher

@eegg i olabilir başka bir dil için bir ayrıştırıcı bir daha bağışlayıcı bir şekilde söz dizimi hatalarına tepki gösterdi eğer görüntü ne olacağını: Biz yanlış parantez aşağı avcılık ve fonksiyonel kod yazarak yarı iki nokta üst üste ve daha fazla zaman eksik daha az zaman harcamak olur. İyi programcıların programlarını hala iyi biçimlendirmeyeceklerini söylemiyorum , ancak vasat programcıların çalışma kodlarını yazmasına kesinlikle yardımcı olacak . Bir Cprogram muhtemelen Python, noktalı virgüllerin ve braketlerin çoğunlukla ortadan kalkabileceği bir programa çok benzeyecek ve geriye kalan önemli koddur.
zzzzBov

“İstenen kaynak /past.htmlbu sunucuda artık mevcut değil ve bir yönlendirme adresi yok.”
Marco

6

Xml uyumlu html5 üretip bunları mml türü olarak xml ile gönderirseniz, xml ayrıştırıcısı tüm iyi cazların geri döndüğü her şeyde kullanılacaktır;)

EDIT: daha fazla bilgi için bakın: http://wiki.whatwg.org/wiki/HTML_vs._XHTML


"İyi caz" ı tanımlayın. AFAIK, HTML'yi XML olarak ayrıştırmanın bir avantajı yoktur. Üretmek ve dönüştürmek diğer meselelerdir, bunlar uygun olabilir, ancak kendi başına ayrıştırma avantajlar sunmaz, yalnızca olumsuz yanları giderir (kozmetik böcekleri ölümcül yapar).
Joeri Sebrechts

3
@Joeri Ayrıştırmanın çok daha kolay olması, çeşitli nedenlerden dolayı kitabımda bir avantajdır (kesin ayrıştırma, hata bulma, araçların yazılması daha kolay, girdilerin daha kolay temizlenmesi vb. İçin daha iyi araç desteği).
Konrad Rudolph

Ayrıca, diğer xml içeriklerine sahip micin xhtml gibi standart html'de kullanılamayan bazı işlevler sunabilir ve genel olarak tüm xml işlevlerini, örnekleme için ad alanlarını kullanabilirsiniz. html ayrıştırıcısı hatalı kaynak kodunu düzeltebilir - bunları adlandırdığınız gibi kozmetik hatalarını giderebilir, ancak bu düzeltmelerin bir bedeli vardır. Fiyat, tarayıcının kodda ne bulabileceğini bilmek zorunda olması ve bu nedenle mevcut işlevsellikleri sınırlandırmasıdır.
deadalnix

3

HTML5, Postel yasasını benimseyen tarayıcıların mantıklı ve kaçınılmaz sonucudur ("Ne kabul ettiğinizde liberal olun").

Yeterli pazar payına sahip bir tarayıcı bu ilkeyi benimsediğinde, diğerleri yalnızca uygunsuz içerik kabul ederek liberal olmakla değil, aynı zamanda rakipleriyle aynı şekilde yapmak için de uygun davranmak zorunda kalır. HTML5 bu durumun mantıksal sonucudur: tarayıcı satıcıları herhangi bir içeriği geçersiz olarak reddetmeyeceklerine karar vermiştir (en azından HTML düzeyinde değil - Javascript başka bir konudur!) Tablo hazırlayın ve içerik yazarının kendilerine atabileceği herhangi bir şeyin yorumunu kabul edin. Bu ortamda, standart-meraklılara karşı nazik tepki göstermediler, onlara sadece yanlış biçimlendirilmiş içeriği baştan sona reddettilerse, bu karışıklığa girmeyeceklerini söylediler.

Yani siz ve ben aralarında haykırış yapabiliriz ve tarayıcı satıcılarına ve kullanıcılarına, John Postel'e inanmasaydı dünyanın daha iyi bir yer olacağını söyleyebiliriz, ancak hasar meydana geldi ve geri almak çok zor.


3
Tarayıcıların rekabet eden özensizliği hikayesi yeterince doğrudur. Ama işte olay : standartların meraklıları bu yüzden var. Tüm tarayıcılar en başından itibaren düz ve dar uygularsa, W3C gibi kuruluşların işleri kontrol altında tutmak için burada olması gerekmez. Bütün noktası standartlarının hasar kontrol olduğu; standartlar kuruluşunun verimsizliği kabul edip kabul etmesi, amacını yitirir.
jameshfisher

1
@eegg: HTML5 tüm girişi geçerli kılmak ve hala öngörülebilir sonuçlara ulaşmak için ayrıştırma kurallarını yeniden tanımlıyor. Eğer sözdizimi hataları imkansızsa, baştan beri bütün bir sınıf böcek dışlanır. XML'in ayrıştırma hatalarına sahip olma yeteneği bir tasarım hatasıdır ve bu şekilde tanınmalıdır.
Joeri Sebrechts

1
@Joeri, senin pozisyonun, onun mantıklı sonuca götürdüğü, HTML5'in özelliği gibi görünüyor. "HTML5, tüm girişleri geçerli kılmak için ayrıştırma kurallarını yeniden tanımlıyor" - değil. Ayrıştırma hataları kavramı hala var. "Eğer sözdizimi hataları imkansızsa, baştan beri bütün bir sınıf böcek dışlanır" - belki bu parodi olabilir mi? Bu mantık, pthesis'in cevabına olan yorumumda alaycı bir şekilde paragraf ettiğim şeydir. Evet, daha büyük bir tarayıcı sözdizimi düzeltme hatası sınıfı ile değiştirilmek üzere sözdizimi hatalarının sınıfı kaldırılır .
jameshfisher

2

HTML5 özelliği, HTML4 özelliği üzerinden gerçekten büyük ölçüde iyileştirildi. Özellikle, hata koşullarının ve geçersiz işaretlemenin işlenmesi standart hale getirilmiştir, yani standardı doğru uygulayan tüm tarayıcılar aynı şekilde geçersiz işaretlemeyi işleyecektir.

HTML, insanlar tarafından (genellikle bir çeşit cazip dili ile birlikte) yazıldığından daha sık yazılır ve insanlar hata yapar. Tüm tarayıcılar sözdizimi hatalarını aynı şekilde ele aldığı sürece, "kabul ettiğinizde liberal olun" kuralı tamamen kabul edilebilir.

Geçerli XML üretme konusunda çok az avantaj var, çünkü HTML'yi işlemek için araçlar ve kütüphaneler (neredeyse) hazırdı ve HTML, insanların XML'den yazmaktan daha kolay.


Üzeri HTML4 şartname, evet. Ancak benim açımdan XHTML1.1'in bu konuda çoktan gelişmiş olduğu. HTML'yi işlemek için araçlar / kütüphaneler BeautifulSoup gibi olma eğilimindedir - harika araçlar olsa da, ayrıştırılmak için yapılan sayfalarla birlikte ölmeleri gerekir.
jameshfisher

1

İstemci tarafında daha basit bir çözümleyici veya standart XML araçlarından asla yararlanamayacaksınız.

HTML’de web’de milyarlarca sayfa vardır, bazıları uzun zamandır ölen insanlar tarafından yazılmıştır, bu yüzden asla XML’de güncellenmeyeceklerdir. Bu nedenle, genellikle kullanışlı bir kullanıcı aracısı oluşturmak istiyorsanız , eski moda HTML'yi yine de ayrıştırmanız gerekir. Muhtemelen XHTML yalnızca ek bir karmaşıklık getirmektedir, çünkü zaten desteklemeniz gereken HTML ayrıştırmaya ek olarak yeni bir ayrıştırma modu gerektirir.

Sunucu tarafında, örneğin XML araçlarından yararlanmaya devam edebilirsiniz. XSLT kullanılarak XHTML oluşturulması. Ancak, özellikle bir XML araç zinciri kullanmıyorsanız, sadece HTML yerine XML sözdizimini kullanmanın bir faydası yoktur.

(HTML'nin "standart olmayan" sözdizimi olduğu doğru değilsiniz. HTML5 sözdizimi, HTML5 belirtiminde titizlikle ayrıntılı olarak belirtilmiştir, bu nedenle de XML sözdizimi kadar standart.

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.