…HTML sözdizimini öğrenmesi nispeten basit olsa da,…hala birçok öğe, nitelik ve…öğrenmeniz ve takip etmeniz gerekecek başka kavramlar var.…Bu kursun amacı size HTML'nin temellerini öğretir, bu…gerçekten size mevcut her bir öğeyi ve özelliği öğretmek için tasarlanmamıştır.…Bu nedenle, bunu akılda tutarak, size gerçekten yardımcı olabilecek birkaç çevrimiçi HTML kaynağı vermek istiyorum. HTML öğrenmeye başlarsınız ve… daha sonra kendi sayfalarınızı yazarken değerli referanslar olarak hizmet edebilirsiniz.…Şimdi, spesifikasyonların kendisinden başlayacağız.…

Ve bu bir şey, kesinlikle yer imlerine eklemeniz gereken iki belge.…Yani, bu HTML5'in W3Cs versiyonu.…Onların en son Yayıncı Sürümüne sahip olduklarını görebilirsiniz.…Gidip Editörün Taslağını görebilirsiniz… borudan aşağı inen şeyi görmek istiyorum.…Ve bu oldukça büyük.…Aşağı kaydırırsam, yapabilirsiniz bakın burada sadece İçindekiler var.…Ve ben hepsini kaydırmayacağım bile.…

Transkript Otomatik Kaydırmayı Sürdür

Güncellenmiş
3/30/2017
Piyasaya sürülmüş
3/16/2015

HTML, web'e güç sağlayan programlama dilidir. Ve herhangi bir dilde olduğu gibi, bir kez o dilde uzmanlaştıktan sonra, ister basit web siteleri ister karmaşık web uygulamaları olsun, kendi içeriğinizi oluşturmaya başlayabilirsiniz. Bu kurs, temel konulara derinlemesine bir bakış sağlar: HTML sözdizimi ve aşağıdakiler için en iyi uygulamalar. kıdemli personel yazarı James Williamson tipik bir HTML belgesinin yapısını inceler ve sayfaları nasıl bölümlere ayıracağınızı ve içeriğinizi HTML ile nasıl biçimlendireceğinizi gösterir. Artı, bağlantılar ve listeler oluşturmayı öğrenin ve zengin içerik oluşturmak için HTML'nin CSS ve JavaScript ile nasıl çalıştığını öğrenin. , ilgi çekici kullanıcı deneyimleri.

Konular şunları içerir:

  • HTML neden önemlidir?
  • Bir HTML belgesini keşfetme
  • İçeriği biçimlendirme
  • Resimleri göster
  • Gezinme, makale ve div öğelerini kullanma
  • Sayfalara ve indirilebilir içeriğe bağlantı
  • Liste oluşturma
  • Stili denetleme (yazı tipleri, renkler ve daha fazlası)
  • Temel komut dosyaları yazma

: Bunu hep anlamak istemiştim ama önemi o kadar küçüktü ki her zaman yapmamak için bir sebep vardı :)

Ve merak ettin: URL - nedir?

Buna hep rastlarım, ama yine de URI, URL, URN terimleri arasındaki farkı anlamak istemedim ve sonra aniden bir gönderi (maalesef unutulmaya başladı), karar verdim - okuyacağım kendim ve başkalarına söyleyin, yukarıda belirtildiği gibi, bundan hiçbir şey değişmeyecek, ancak bazen hecelemeyi seviyorum, bu yüzden mantıklı çevirmeni okuyun:

Tarayıcınızdaki adres çubuğuna hiç dikkat ettiniz mi? Bu nedir? URI, URL veya URN? Birçoğumuz URI, URL, URN arasında ayrım yapmıyoruz ve bazılarımız URI ve URN terimlerini hiç duymadık, herkes sadece URL terimini kullanıyor. Bunu birlikte çözmeye çalışalım.

Kısaltmaların açıklaması

URI - Tekdüzen Kaynak Tanımlayıcı (tek biçimli) tanımlayıcı kaynak)
URL - Tekdüzen Kaynak Bulucu (birleşik konum bulucu kaynak)
URN - Tekdüzen Kaynak Adı (tek biçimli isim kaynak)

Dikkat, burada gerçek küçük şeylerde yatıyor, ancak şu ana kadar hiçbir şey net değil, bir tür karışıklık. Daha ileri gidelim.

Tanım

URI: Web üzerindeki bir kaynağın adını ve adresini belirtir. Genellikle URL ve URN'ye bölünür, dolayısıyla URL ve URN, bir URI'nin bileşenleridir.
URL: Web'deki bazı kaynakların adresi. URL, kaynağın konumunu ve ona nasıl erişileceğini tanımlar.
URN: Web'deki bazı kaynakların adı. Bir URN'nin amacı, yalnızca birden çok belirli yerde bulunabilen belirli bir öğenin adını tanımlamasıdır.

Somut bir örnekten daha iyi bir şey yoktur

URI = http://site/2009/09/uri-url-urn.html
URL = http://site
URL=/2009/09/uri-url-urn.html

Özetliyor

URI, soyut bir tanımlayıcı kavramıdır, URL ve URN ise adreslerin ve adların somut uygulamalarıdır.
Umarım her şey herkes için açıktır. Akıllı ol!

Her birimizin algısı bireyseldir, bu nedenle - makalenin yorumlarındaki tartışmaları tartışın ve okuyun, birçok ilginç şey var.

Kural olarak, birçok web yöneticisi sitelerini oluşturulduktan hemen sonra ana bilgisayara yükler. Aynı zamanda sayfaların iç kodunun doğruluğundan çok metin içeriğinin anlamının doğruluğuna odaklanırlar.

Site Doğrulama

Ancak sitenin konumunu etkileyebilecek ve etkileyebilecek başka faktörler de var. Ve diğer şeylerin yanı sıra teknik faktörleri de içerirler. Eh, sitenin validasyonu da teknik olanlara aittir. Peki nedir?

Eğer bir basit terimlerle, site doğrulaması, teknik uygunluk ve hatalar için site kodunun kontrolüdür. Örneğin, /html kapanış etiketini kullanmayı unuttunuz. En son HTML5'te görsel olarak hiçbir şey değişmeyecek. Ancak bu bir kod hatasıdır.

Kod yazarken başka hatalar olabilir. Ve yine, modern hiper işaretleme dili çok fazla dayanacaktır. Örneğin, /head kapanış etiketini "unutmak". Yine, farkı görmeyeceksin. Ama o))

Aslında, bir web sitesi yazarken oldukça fazla hata olabilir. Daha da kötüsü, bu hatalardan bazıları görsel olarak da ortaya çıkabilir. Belki bloklar yüzer, belki hizalanır ya da belki başka bir şey. Potansiyel hatalar, binlerce. Ve hepsi çarpıcı değil.

Tehlike nedir?

Öyle görünüyor ki, bunda yanlış olan ne? Evet, genellikle bu tür hataların görünmediği söylenmelidir. Daha doğrusu, insanlar için görünmez. Ancak sitemizin sayfaları sadece insanlar tarafından değil, siteyi tamamen tarayan arama örümcekleri tarafından da ziyaret edilebilir. Ve sitede buldukları her hatayı Yandex veya Google gibi arama motorlarının sunucularına iletirler.

Arama motorları da sitenin çok fazla kod hatası olduğunu görünce sitenin kötü olduğu sonucuna varabilir. Ve bu, aramada onu yükseltmeyecekleri anlamına gelir. Eh, bu zaten aramadan gelen ziyaretçilere veda etmek anlamına gelecektir.

Evet, kabul edilmelidir ki, doğrulama hataları nedeniyle sitenin belirli bir karamsarlığı oldukça nadirdir. Ancak bu oldukça mümkündür, bu da doğrulama üzerinde çalışılması gerektiği anlamına gelir. Ve bunun için ne yapılması gerekiyor? Tabii ki, ilk adım hataları bulmaktır.

Ancak manuel olarak bu çok zaman alan ve güvenilmez bir iş olduğundan, hataları aramak için kullanırlar. Özel servis, sözde "Doğrulayıcılar".

Doğrulayıcı İşaretleme Doğrulama Hizmeti.

Bu hizmet, hemen hemen her siteyi oluştururken çoğu sayfanın temeli olan HTML ve XHTML kodlarının doğruluğunu kontrol eder ve iç yapısını belirler. Bu doğrulayıcı hizmetine http://validator.w3.org bağlantısını izleyerek erişilebilir.

Ancak burada diğer doğrulayıcılar için de geçerli olan bir ön koşul vardır: kontrol edilen site veya kontrol edilen sayfaları barındırmaya yüklenmelidir. Aksi takdirde, doğrulayıcı site adresini "bilmeyecek" ve hiçbir şeyi kontrol edemeyecektir. Artık bu doğrulayıcı üzerinde nasıl çalışacağınızı düşünebilirsiniz.

Bu hizmetin sayfasına girdikten sonra, işlevsel resminin tamamı görüntülenecektir. Ancak gösterilen ve yazılanların çoğu ana kontrol için geçerli değildir ve tüm dikkatiniz yalnızca kontrol edilen sayfanın adresinin giriş penceresine verilmelidir:

İşte tam da buradan başlamanız gerekiyor.

Aslında, bir sitenin doğrulamasını kontrol etmek, tüm ölümlü dünyamız gibi son derece basittir: hizmetin adres penceresine site adresini yazmanız gerekir, yani. URL'sini ve ardından "Kontrol Et"i tıklayın. Bu kadar basit bir işlemden sonra, doğrulayıcı birkaç saniye "püfleyecek" ve aşağıdakileri yayınlayacaktır:

Bu, sayfa kodunda herhangi bir hata olmadığı ve kesinlikle sakin olabileceğiniz anlamına gelir.

Ancak böyle istenmeyen bir seçenek de olabilir:

Bu zaten daha kötüdür ve kontrol edilen sayfanın dahili kodunda bazı hatalar olduğu anlamına gelir. Ancak, bu hiç de ölümcül değildir: Aşağıdaki sayfayı kaydırmanız yeterlidir ve doğrulama işlemi sırasında bulunan tüm hatalar burada ayrıntılı olarak yazılacaktır.

Ek olarak, doğrulayıcı yalnızca bulunan hataları listelemekle kalmaz, aynı zamanda bu hataların dahili kodun hangi satırında bulunduğunu tam olarak gösterir. Böylece onları uzun süre aramak zorunda kalmayacaksınız. Burada, hiçbir şeyi abartmadan, bu doğrulayıcının mükemmel çalıştığını kesin olarak söyleyebiliriz.

Ancak hepsi bu kadar değil: doğrulayıcı yalnızca algılanan kod hatasının yerini göstermekle kalmaz, aynı zamanda bu hataların nasıl ortadan kaldırılacağı konusunda oldukça eksiksiz öneriler de verir. Tabii bunun için tembel olmanıza ve yazılan her şeyi dikkatlice okumanıza gerek yok.

Kısa ve genel bir sonuç olarak şunları söyleyebiliriz:

  1. bu doğrulayıcı hizmeti harika çalışıyor ve siteyi çok hızlı bir şekilde kontrol edebilir.
  2. Küçük ama çok hoş bir ek: site doğrulaması ücretsizdir.
  3. Şimdi bir sonraki adıma geçebiliriz: bu, CSS kodunu kontrol etmektir.

CSS Doğrulama Hizmeti

Genel olarak, bu yukarıdaki hizmetin ikinci işlevidir, ancak HTML ve XHTML kodunu kontrol etmek için değil, özellikle kodun doğruluğunu kontrol etmek için “keskinleştirilmiştir”. css stili dış masada bulunur. Ve hizmet sayfasına ulaşmak için http://jigsaw.w3.org/css-validator bağlantısını takip etmeniz gerekiyor.

Bu arada, burada hoş bir şeye dikkat çekmekte fayda var: Bu hizmeti kontrol etmek tamamen ücretsizdir. Bu yüzden cüzdanınızdan para çekmeyin - doğru ana kadar uzanmasına izin verin. Ancak, bu ikinci hizmet üzerinde çalışma metodolojisine geçelim.

Genel olarak, CSS doğrulayıcı üzerindeki tüm çalışmalar, kod temizliğini kontrol etmekle kesinlikle aynıdır. Bu nedenle, doğrulayıcının adres çubuğunun ayrı bir görüntüsünü sağlamaya gerek yoktur. Sadece biraz daha düşük, çekin sırasını kısaca ele alacağız ve hepsi bu.

Bunun için yapmanız gerekenler adres çubuğu"http://my site/style.css" gibi CSS tablosunun URL'sini yazın ve ardından Rusça "Kontrol Et" yazan düğmeyi tıklayın. Buna göre, bu doğrulayıcı ayrıca birkaç saniye "puf" yapacak ve istenen sonucu verecektir:

Bu, CSS tablosunun doğru yazıldığı ve içinde hiçbir hata bulunmadığı anlamına gelir.

Ve burada da hoş bir sürpriz var: Sayfayı biraz aşağı kaydırırsanız, CSS tablonuz için optimize edilmiş kod buraya yazılacak ve tüm gereksiz yazılar kaldırılacak ve tüm kod etiketleri sırayla düzenlenecektir. herkesin optimal çalışma gereksinimlerini karşılayan arama motorları. Geriye bu mükemmel kod örneğini kopyalayıp CSS tablosuna yapıştırmak kalıyor.

Böyle bir şeyin olması oldukça olasıdır:

Bu, CSS kodunda bazı hatalar bulunduğu anlamına gelir, ancak bundan hiç korkmamalısınız. Bu kırmızı çizginin hemen altında, doğrulayıcı size tam olarak hangi etiketin yanlış yazıldığını söyleyecektir. Sadece bu etiketleri stil sayfasında bulmak ve gerekli düzeltmeleri yapmak kalır.

Ve elbette, bundan sonra, düzeltilmiş stil sayfasını ana bilgisayara yükleyin ve yeşil bir çizgi varsa, optimize edilmiş CSS tablosu stil kodunu mutlu bir şekilde kopyalayabilirsiniz. O zaman değiştirmenin en iyisi olduğu oldukça açık eski kod yeni ve optimize edilmiş birine.

Kısa özet.

En temel ve zorunlu iki web sitesi doğrulama kontrolü yukarıda tartışılmıştır. Bu kontroller olmadan robots.txt'de arama motorları için indekslemeyi bile açmamalısınız. Aksi takdirde site indeksleme için göz ardı edilebilir. arama motorları ve uygun yaptırımlarla kusurlu olarak kabul edilecektir.

Bunun olmasını önlemek için, sitenizin ve tüm sayfalarının teknik durumundan kesinlikle sakin ve tamamen emin olmak için sadece birkaç dakika harcamanız gerekir. Elbette, ek bağlantı ve bağlantı kontrolleri, mobil cihazlarda site görünürlüğü ve diğer kodların parametreleri de gereklidir. Ancak o zaman sitenin tam olarak çalışmaya hazır olduğu ve başarılı ve başarılı olduğu kabul edilebilir. hızlı promosyon TOP'da.

Diğer tüm kontrollerin yukarıda tartışılanlar kadar hızlı ve basit olduğunu şimdiden söylemek isterim - doğrulayıcı ile çalışma prosedürünü dikkatlice okumanız yeterlidir.

04/19/2018 tarihinde eklendi

HTML Kodunu Doğrularken Yaygın Geçerlilik Hataları

Makaleyi güncellemeye karar verdi. HTML hataları genellikle sitelerde bulunan kodlar. Her durumda, birçoğu vardı))). Doğrulayıcı, hataları sarı renkle vurgular.

1) Hata: Karakter referansı noktalı virgülle sonlandırılmadı.


Hata: karakter noktalı virgülle kesilmedi - buna göre eklenmelidir.

2) Uyarı: Bölümde başlık yok. Tüm bölümlere tanımlayıcı başlıklar eklemek için h2-h6 öğelerini kullanmayı düşünün.


Uyarı: Bu bölümün başlığı yoktur. Tüm bölümlere tanımlayıcı başlıklar eklemek için h2-h6 öğelerini kullanmayı düşünün. Burada her şey açık, en az bir altyazı eklemeniz gerekiyor. Bu bir hata bile değil, bir tavsiyedir.

3) Hata: Bu bağlamda p öğesinin alt öğesi olarak öğe noindex'e izin verilmiyor.


Hata: noindex öğesine şu şekilde izin verilmiyor alt öğe p öğesi bu bağlamda. (Bu alt ağaçtan daha fazla hatayı bastırın.)
Çözüm basit, noindex etiketini yorumlamanız gerekiyor, görünüm şöyle görünecek:

4) Hata: Merkez eleman eski.

Hata: "center" etiketi güncel değil - değiştirilmelidir, eğer img hakkında konuşuyorsak, align niteliğini kullanabilirsiniz. Başka bir şey ortalanmışsa, onu bir div ile değiştirin.

5) Bir img öğesi, belirli koşullar dışında, bir alt özniteliğine sahip olmalıdır.


Hata: img öğesinin bir alt özniteliği olmalıdır - burada her şey açık, bir alt özniteliği eklemeniz gerekiyor, boş olsa bile hata ortadan kalkacaktır.

6) td öğesindeki genişlik özelliği eskidir. Bunun yerine CSS kullanın.

Hata: 'td' öğesindeki 'width' özelliği kullanımdan kaldırıldı

7) Javascript kaynakları için type niteliği gereksizdir


Hata: Javascript kaynakları için type niteliği gerekli değil. Çözüm, gereksiz olan her şeyi kaldırmak ve yalnızca "script" etiketini bırakmaktır.

8) img öğesindeki hizalama özelliği artık kullanılmamaktadır.


Hata: img öğesindeki hizalama özelliği kullanımdan kaldırıldı. Görüntü hizalama div'leri yapın.

ResourceBundle.Control sınıfı, paketleri ararken ve yüklerken ResourceBundle.getBundle() yöntemi tarafından çağrılan bir dizi harici yönteme sahiptir. Control sınıfınızı oluşturduktan sonra, varsayılan yükleme ve önbelleğe alma davranışını değiştirebilirsiniz.

Bu durumda, Control sınıfının iki yönteminin bir uygulamasını oluşturmanız gerekir: getFormats() ve newBundle() . getFormats() yöntemi, korumaktan sorumludur. XML biçimi, ve newBundle() bir kaynak demeti üzerinde çalışır. Temel Denetim sınıfı, temel küme adlarını gerçek kaynak adlarına dönüştürmek için yardımcı yöntemlere sahiptir.

ResourceBundle.Control sınıfının bu uygulaması, XMLResourceBundle öğesinin bir alt sınıfını içerir. Bu alt sınıf, veri yüklemek için kullanılır. XML dosyası ve bunları ResourceBundle yönteminde kullanmak.

Aşağıda, Control sınıfının bir açıklaması ve ResourceBundle yönteminin bir uygulaması yer almaktadır:

java.io'yu içe aktar*;
java.net'i içe aktar*;
java.util.* dosyasını içe aktarın;

Genel sınıf XMLResourceBundleControl, ResourceBundle.Control'ü genişletir(
özel statik Dize XML = "xml";

Genel Liste getFormats(String baseName ) (
Collections.singletonList(XML) döndür;
}

Public ResourceBundle newBundle( Dize baseName, Yerel ayar,
Dize biçimi, ClassLoader yükleyici,
boole yeniden yükleme)
atar IllegalAccessException, InstantiationException, IOException{
if ((baseName == null ) || (locale == null ) || (format == null )
|| (yükleyici == boş )) (
yeni NullPointerException() atın;
}
ResourceBundle paketi = null ;
if (format.equals(XML))(
Dize paketAdı = toBundleName(baseName, yerel ayar) ;
Dize resourceName = toResourceName
(paketAdı, biçim ) ;
url= loader.getResource
(kaynakAdı) ;
if (url != boş ) (
URLConnection bağlantısı = url.openConnection() ;
if (bağlantı != boş ) (
if (yeniden yükle) (
bağlantı.setUseCaches(false);
}
InputStream akışı = bağlantı.getInputStream() ;
if (akış != null ) (
BufferedInputStream bis = yeni BufferedInputStream(
aktarım);
paket = yeni XMLResourceBundle(bis);
bis.close();
}
}
}
}
iade paketi;
}

Özel statik sınıf XMLResourceBundle, ResourceBundle'ı genişletir(
özel Özellikler sahne;

XMLResourceBundle(InputStream akışı) IOException(
aksesuarlar = yeni Özellikler();
props.loadFromXML(akış) ;
}

Korumalı Nesne handleGetObject (Dize anahtarı) (
props.getProperty(key) döndür ;
}

Genel Numaralandırma getKeys()(
handleKeys = props.stringPropertyNames olarak ayarlayın() ;
dönüş Koleksiyonları numaralandırma (handleKeys);
}
}

Public static void main(String args ) (
("Test2" ,
yeni XMLResourceBundleControl()) ;
sicim= paket.getString
("YardımAnahtarı" );
System.out.println ("HelpKey: " + dize ) ;
}
}

Bu uygulama, üç satırlı bir test programı içerir:

ResourceBundle paketi = ResourceBundle.getBundle("Test2", yeni XMLResourceBundleControl()) ;
String string = paket.getString
("YardımAnahtarı" );
System.out.println ("HelpKey: " + dize ) ;

Burada en ilginç olanı ilk satırdır. Kontrolünüzü getBundle() yöntemine iletmeniz gerekir. Bundan sonra, seti başka herhangi bir durumda olduğu gibi kullanabilirsiniz.

Aşağıdaki örnek bir XML dosyasıdır Test2.xml:

http://java.sun.com/dtd/properties.dtd" > TAMAM İptal Yardım Evet hayır

XMLResourceBundleControl programının yürütülmesinin sonucu şöyle olacaktır:

> java XMLResourceBundleControl HelpKey: Yardım

Yukarıdaki uygulama getTimeToLive() ve needReload() yöntemlerini kullanmaz:

genel uzun getTimeToLive( Dize baseName, Yerel ayar)

public boolean ihtiyaçlarıYeniden yükle( dize tabanıAdı,
yerel ayar,
dize biçimi,
sınıf yükleyici,
kaynak paketi,
uzun yükleme Süresi )

getTimeToLive() yöntemi, ResourceBundle.Control ile oluşturulan kaynak paketlerinin yaşam süresini döndürür. Yeniden yükleme sürecini hızlandırmak için kaynak kümeleri önbelleğe alınır. Böylece, bir seti yeniden yüklerken önbellekte olacaktır. Pozitif bir yaşam süresi değeri, milisaniye cinsinden, setin yeniden doğrulama olmadan önbellekte ne kadar kalacağını belirler. getTimeToLive() yöntemi tarafından döndürülen varsayılan değer, önbellek süre sonu denetimini devre dışı bırakan TTL_NO_EXPIRATION_CONTROL şeklindedir. Kümeyi önbelleğe almak istemiyorsanız TTL_DONT_CACHE döndürün. Dönüş değeri 0 ise, paket önbelleğe alınır, ancak getBundle() yöntemi her çağrıldığında kontrol edilir. Önbelleği temizlemek için ResourceBundle sınıfının statik clearCache() yöntemini çağırın. Belirli bir yükleyici tarafından oluşturulan önbellekleri temizlemenize izin veren isteğe bağlı bir ClassLoader argümanına sahiptir.

NeedsReload() yöntemi, önbelleğe alınan kümenin yeniden yüklenmesi gerekip gerekmediğini belirler. true değeri, kümenin yeniden yüklenmesi gerektiği ve false değeri yeniden yüklenmesi gerekmediği anlamına gelir. NeedsReload() yöntemini aşırı yükleyerek bir kaynak kümesinin yeniden yüklenmesi gerekip gerekmediğini kontrol edebilirsiniz. Örneğin, kaynak kümesinin her zaman yeniden yüklenmesini istiyorsanız, needReload() yöntemi her zaman true değerini döndürmelidir. Bu durumda, getTimeToLive() yöntemi her zaman 0 değerini döndürmelidir. Aksi takdirde, küme beklenenden daha uzun süre devam eder.

almak için Ek Bilgiler Mustang'in uluslararasılaştırma süreçlerinde yapılan iyileştirmeler hakkında bilgi için, Sun Software Developer'ın adresindeki John Okoner'in bloguna bakabilirsiniz.