[Çözüldü] W3 Validation: <pre> ve <p> hataları

Başlatan utdmr, 05 Temmuz 2010 - 01:57:52

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

utdmr

W3 validation; blogumla ilgili şu hatalardan onlarca veriyor:

Alıntı YapLine 86, Column 28: document type does not allow element "pre" here; missing one of "object", "applet", "map", "iframe", "button", "ins", "del" start-tag
<pre class="brush: python;">#!/usr/bin/env python

The mentioned element is not allowed to appear in the context in which you've placed it; the other mentioned elements are the only ones that are both allowed there and can contain the element mentioned. This might mean that you need a containing element, or possibly that you've forgotten to close a previous element.

One possible cause for this message is that you have attempted to put a block-level element (such as "<p>" or "<table>") inside an inline element (such as "<a>", "<span>", or "<font>").

Alıntı YapLine 152, Column 3: document type does not allow element "p" here; missing one of "object", "applet", "map", "iframe", "button", "ins", "del" start-tag
<p><a href="http://www.riverbankcomputing.co.uk/software/pyqt/intro"> http://ww...

The mentioned element is not allowed to appear in the context in which you've placed it; the other mentioned elements are the only ones that are both allowed there and can contain the element mentioned. This might mean that you need a containing element, or possibly that you've forgotten to close a previous element.

One possible cause for this message is that you have attempted to put a block-level element (such as "<p>" or "<table>") inside an inline element (such as "<a>", "<span>", or "<font>").

Bu hataların sebebi nedir?

Not: Wordpress kullanıyorum, ve en sondaki öneri değil, <a>'nın içinde <p> olması falan.
Kişisel Blogum: Çoğunlukla Zararsız - cogunluklazararsiz.org
--
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -and a lot of courage- to move in the opposite direction.

Alquimista

Az önce baktım bende W3 validate'den de ilk etapta 35 hata veriyor. Mesela;

<script type="text/javascript">
document.write('<style type="text/css">.tabber{display:none;}<\/style>');
</script>


Bu kısımdaki <style type="text/css"> yanlış kapatılmış, şu şekilde; <\/style> doğrusu ise </style> olması lazım yani aşağıdaki gibi.

<script type="text/javascript">
document.write('<style type="text/css">.tabber{display:none;}</style>');
</script>


Basitçe sadece bunu düzeltsen 30'a düşüyor hata sayısı. Yani birbiri ile bağlantılı olarak aslında çokta sağlıklı bir denetim mekanizması yok bence W3'ün.

W3 validate olayını çok önemsememek gerekiyor gibi geliyor bana ve çünkü bunu önemsemeye başlayarak bir çalışma yapsan belki o çalışma başka bir tarayıcıda çalışmayacak. Birinde çalışan diğerinde çalışmayacak durumlar oluyor, mesela iE sağ olsun W3'ü kaba tabirle sallamıyor bile. Sen buna uygun kodlama yaparsın, sorun yok der sana tamam güzel sonra bir bakarsın yaptıkların İE'de çalışmaz olmaz neden tarayıcı yüzünden.

Üstteki verdiğim hata kodlarken gözden kaçmış bir kısım, muhtemelen yazan arkadaşın o ara uykusu geldiğinden bir slash ters koymuş ve aslında hiçbir önemi yok bu tür hataları tarayıcılar anlayıp uygun biçimde gösterebiliyor zaten.

Ama illa ki ben bunların hepsini düzelteyim dersen bence daha kolay yolu, Wordpress'de bulunan bir eklentini devre dışı bırak, sayfayı öyle tarattır; sonra temayı standart yapıp öyle tarattır yani bu şekilde denemelerde bu verilen kodlama hatalarının neden kaynaklandığını daha rahat görebilirsin. Mesela alıntı yaparken Phtyon için renklendirme yapsın diye kullandığın eklenti ile ilgili bir hata 86'da olan. Belki de yukarı gibi basit bir açma/kapatma hatasıdır ama büyük ihtimalle eklenti sebebi ile geliyor bu hata. Önemli mi? Bence eklentin çok güzel ve önemi yok.

Bu hatalarda genel olarak bahsettiği ise yukarıdaki örnekte verdiğim gibi <p> açılmışsa yeri geldiğinde </p> kapanmalıdır. Kapanmamışsa bu hata verilmiş olabilir. Veya

<p>
<a href="deneme.html">Deneme Sayfası</a>
</p>


burada <p> paragraf diye düşünelim, <a> ise linkimizi tanımlıyor. eğer bu kod;


<a href="deneme.html"><p>Deneme Sayfası</p></a>

gibi bir biçimde olursa bu yanlıştır, linki paragrafa değil yazıya veriyoruz. Yani bir elementin diğerinden önce ya da sonra gelmesi ile alakalı bir durum. Bu gibi bir hata olabilir diyor. Ben görmedim böyle bir hata ama saatin geç olması sebebiyle gözümden kaçmışta olabilir.

Ben çok önemsememeni öneririm @utdemir, ama istersen de hataların parça parça üzerine gidebilirsin. Zaten bir tanesi çözülürse ardından bir kaç tanesi de otomatik olarak düzelecektir mesela.
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a c rack in the ice appears under your feet. You slip out of your depth and out of your mind with your fear flowing out behind you as you claw the thin ice.

utdmr

#2
@AlmaMorena, teşekkürler yanıtın için.

Bazı yerlerde arama motorlarının W3'ü dikkate aldığını okumuştum, sitemde de onlarca hata çıkınca sorun olabileceğini düşündüm. Eğer bu bir hurafe ise, hiç dikkate almayabilirim de. Ancak çoğu yerde W3 uyumlu temalar dağıtıldığı için önemi olabilir sanki.

Diğer hataların da aynı olmasından yola çıkarak, büyük ihtimalle en başta kapatılmamış bir <a>'dan falan olabilir gibi geliyor dediğin gibi. JavaScript bilmiyorum ama, o kısımdaki "\", sonraki "/"'ın escape edilmesini sağlıyor gibi geldi bana, kaldırınca 30'a düştü hata ama, sitenin çalışmasında bir sorun olmasın?
Edit: Başka yerlerde de kullanılmış, demek ki sorun değil :).

Edit 2: Bir posttaki içi boş <p></p> tagını silince kaldı 12 hata.

@AlmaMorena'nın dediği gibi, hatalar 10'ar 10'ar iniyor :).

Edit 3: 3-4 düzenleme daha, ve tek hata kaldı:

Alıntı YapLine 12, Column 39: document type does not allow element "style" here
document.write('<style type="text/css">.tabber{display:none;}</style>');

The element named above was found in a context where it is not allowed. This could mean that you have incorrectly nested elements -- such as a "style" element in the "body" section instead of inside "head" -- or two elements that overlap (which is not allowed).

One common cause for this error is the use of XHTML syntax in HTML documents. Due to HTML's rules of implicitly closed elements, this error can create cascading effects. For instance, using XHTML's "self-closing" tags for "meta" and "link" in the "head" section of a HTML document may cause the parser to infer the end of the "head" section and the beginning of the "body" section (where "link" and "meta" are not allowed; hence the reported error).
Bu hatanın nedeni nedir?
Kişisel Blogum: Çoğunlukla Zararsız - cogunluklazararsiz.org
--
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -and a lot of courage- to move in the opposite direction.

Alquimista

Arama motorları siteyi kitap gibi okuduğu için bence sorun olmaz :D hehe. Şaka bir yana, düzeltilecek kısımlar varsa düzeltmek mantıklı bak mesela bulduklarımız gerçekten düzeltilmeye değer şeylerdi :)

Seninde gördüğün üzere çalışmasında bir problem yaratmaz zaten tarayıcı ufak hataları görmezden gelip doğruca gösteriyor ama yaptıklarımız zaten doğru olanlar =)

Son hatanın sebebi <style type="text/css"> etiketleri sayfa içinde kullanılacak stilleri belirliyor ve bu stillerin <head> </head> etiketleri içerisinde olması lazım, <body> kısımından sonra gelirse bunun normal bir sıralama olmadığını söylüyor hata. Mesela;

<html>
<head>
<style type="text/css"> </syle>
</head>
<body>
site içeriği
</body>
</html>


Yani site içeriği olması gereken kısımda tüm dokümanı etkileyecek stillerin olduğu <style> olmamalı, <head> içerisinde olmalı ki tüm dokümanı etkileyebilsin. Teoride bu doğru ve bu W3 teorik bilgiler üzerinden sayfayı denetliyor ama hata şurada ki WP php ile hazırlandığından dolayı sayfa içerisinde bazı kısımlar parça parça php dosyaları içerisinden geliyor. (aslında burada daha da enteresan bir şey var ama)

Şuan yukarıdaki gibi <head> </head> etiketleri içerisinde aslında yani söylediği gibi bir hata yok ortada. Ama esasın bizim dikkat etmemiz kısım bundan önce gelen <script type="text/javascript"> kısımı. Yani;

<script type="text/javascript">
document.write('<style type="text/css">.tabber{display:none;}</style>');
</script>


Böyle bir tanımlama bana da enteresan geldi. Bu konuda canosayan bir yorum yaparsa daha iyi olur aslında, php konusunda o anlayacaktır bunun kullanılma sebebini. Ama mantığı yanlış geldi bana, çünkü bir <script type="text/javascript"> demek sayfa içerisinde herhangi bir yerde bir javascript kullanacağım demek, ama bunun içerisinde bize bir js. dosyası yolu ya da kodu vermesi gerekli iken .js'ler içerisinde

.tabber{display:none;}

stilini kullan demek istemiş sanırım. Mantığı başka olamaz ama bu şekilde bir kullanımı hangi tarayıcı anlayabilir ben emin değilim pek.

Düzeltmek için şöyle yapabiliriz belki, tema dosyanın içerisinde bir stil dosyası vardır mutlaka bu stil dosyası içerine eklersin bu .tabber satırını, bu şekilde zaten  tüm doküman genelinde eğer .tabber işaret edilirse onu zaten  alacaktır. Ve bu şekilde bence yazımı yanlış olan;

<script type="text/javascript">
document.write('<style type="text/css">.tabber{display:none;}</style>');
</script>


satırını komple kaldırabilirsin ilgili yerden. Bir denemekte fayda var, eğer bir şekilde sitenin çalışmasında, özellikle eklentilerde bir sorun yaşamazsak demek ki doğru düşünmüşüzdür :)
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a c rack in the ice appears under your feet. You slip out of your depth and out of your mind with your fear flowing out behind you as you claw the thin ice.

utdmr

#4
@AlmaMorena;

Son önerini yerine getirdim, tema template'inden ilgili yeri sildim ve dediğin gibi style.css'e ilave ettim.

Validator tamam dedi :), ancak şimdi düşünüyorum da, tema yaratıcısının bunu yapmasında tek mantıklı açıklama yok. Sadece header.php'ye hiç bir comment olmadan, hiç bir koşula bağlamadan eklemiş <head>'in içine.

JavaScript kodunun içine .tabber'ın display'ını none yapacak bilgiyi gömmesi en zorlasak şu işe yarar bence; "Eğer bir tarayıcı javascript'i destekliyorsa, display'ı none yap". Ancak artık Javascript desteklemeyen tarayıcı kalmadığı için, gereksiz gibi.

Site şu anda hatasız çalışıyor gibi, ne herhangi bir eklentiyle, ne de tabber'la ilgili bir sorun yaşamadım.

Teşekkür ederim ilgin için, konu çözüldü şimdilik, ama bir kaç saat açık kalsın da sitede bir sorun yaşarsam bildiririm buradan :).
Kişisel Blogum: Çoğunlukla Zararsız - cogunluklazararsiz.org
--
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -and a lot of courage- to move in the opposite direction.

Alquimista

Çalışıyorsa sorun yok @utdemir, söylediğin çok mantıklı ben onu düşünememiştim;

Alıntı yapılan: utdemir - 05 Temmuz 2010 - 20:06:58
JavaScript kodunun içine .tabber'ın display'ını none yapacak bilgiyi gömmesi en zorlasak şu işe yarar bence; "Eğer bir tarayıcı javascript'i destekliyorsa, display'ı none yap". Ancak artık Javascript desteklemeyen tarayıcı kalmadığı için, gereksiz gibi.

Bu javascript temayı hazırlayan arkadaşın işi ise dediğin gibi hata yapmış :) Ben sonradan eklediğin bir eklenti ile ilgili olabileceğini düşünmüştüm. Adam eklenti css gerektiriyorsa bir satır için css dosyası yaratmadan javascript ile hallederim demişte olabilir. Ama her halükarda yaptığın mantıklı olan bence :)

Bir süre bekleyelim bence de eğer sorun çıkmazsa çözülmüş demektir. Sevindim neticelendiğine :)
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a c rack in the ice appears under your feet. You slip out of your depth and out of your mind with your fear flowing out behind you as you claw the thin ice.

utdmr

Javascript temayı hazırlayanın işi, eklentiyle alakası yok, doğrudan temanın dosyalarında :). CSS'im de tamamen doğruymuş :).

Şimdilik pek bir sorun çıkacak gibi görünmüyor, Chromium ve Firefox sorun çıkarmadı, diğerlerinin de sorun çıkaracağını sanmıyorum, IE sorun çıkarırsa memnun bile olurum, W3 validated siteyi nasıl çalıştıramazsın sen diye :).

Çok teşekkür ederim :).
Kişisel Blogum: Çoğunlukla Zararsız - cogunluklazararsiz.org
--
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -and a lot of courage- to move in the opposite direction.

Alquimista

Ehe. İE zaten W3'ü sallamıyor bile kesin sorun çıkartır :D hehe.

Rica ederim, işe yaradıysa öneriler ne mutlu :)
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a c rack in the ice appears under your feet. You slip out of your depth and out of your mind with your fear flowing out behind you as you claw the thin ice.