Ders 10 / 25
Listeler
Sırasız, sıralı ve tanım listelerinin ayrımı; sıralı liste numaralandırmasının kuralı, iç içe yazım ve liste seçiminin yapısal gerekçesi.
İçindekiler
Metin içi işaretleme paragrafın içini yapılandırdı. Bazı içerikler ise paragraf değildir: sıralı adımlar, birbirine denk maddeler, terim–açıklama çiftleri. Bunları paragraf olarak yazmak yapı bilgisini yok eder — okuyucu maddelerin sayısını, sırasının anlamlı olup olmadığını ve nerede bittiğini kestiremez.
Üç liste türü vardır ve seçim, içeriğin doğasına göre yapılır.
Üç Tür
Sırasız liste (ul), maddelerin sırasının anlam taşımadığı listedir. Maddeler yer
değiştirse belgenin anlamı değişmez.
Sıralı liste (ol), sıranın anlam taşıdığı listedir: adımlar, sıralama, öncelik. Yer
değiştirme anlamı bozar.
Tanım listesi (dl), ad–değer çiftlerinden oluşur: terim ve açıklaması, alan ve
içeriği, soru ve yanıtı.
Seçim ölçütü görünüm değildir. Bir sırasız listenin madde imlerini kaldırmak ya da bir sıralı listenin numaralarını gizlemek sunum katmanının işidir; hangi ögenin seçileceğini sıranın anlamlı olup olmadığı belirler.
Madde Ögesi ve Kapsayıcısı
li ögesi bir liste maddesidir ve yalnızca bir liste ögesinin doğrudan çocuğu olabilir.
Doğrudan gövdeye yazılmış bir li ögesi geçersizdir.
li ögesinin kapanış etiketi yazılmayabilir; Belge Nesne Modeli dersinde görüldüğü gibi
yeni bir li açıldığında öncekisi kendiliğinden kapanır. Yazılması yine de yeğlenir.
Liste ögesinin doğrudan çocuğu olarak metin yazmak geçersizdir: ul ve ol ögelerinin
çocukları yalnızca li olabilir. Aradaki boşluk ve satır sonları yok sayılır, ancak
gerçek metin ayrıştırıcı tarafından listenin dışına taşınır.
<ul> <li>Sıcaklık</li> <li>Bağıl nem</li> <li>Rüzgâr hızı</li> <li>Yağış</li> </ul>
Numaralandırma Kuralı
Sıralı listenin numaraları varsayılan olarak birden başlar ve birer artar. Üç öznitelik bu
davranışı değiştirir: start başlangıç değerini, reversed azalan sıralamayı, value tek
bir maddenin değerini belirler. value yazıldığında sonraki maddeler oradan devam eder.
// listeler.mjs — sirali liste numaralandirma kurali function numarala(liste) { const n = liste.ogeler.length; const baslangic = liste.start ?? (liste.reversed ? n : 1); const sonuc = []; let sayac = baslangic; for (const oge of liste.ogeler) { const deger = oge.value ?? sayac; sonuc.push([deger, oge.metin]); sayac = deger + (liste.reversed ? -1 : 1); } return sonuc; } const listeler = [ { ad: "varsayilan", ogeler: [{ metin: "gövde açılır" }, { metin: "sensör okunur" }, { metin: "kayıt yazılır" }] }, { ad: "start=5", start: 5, ogeler: [{ metin: "gövde açılır" }, { metin: "sensör okunur" }] }, { ad: "reversed", reversed: true, ogeler: [{ metin: "gövde açılır" }, { metin: "sensör okunur" }, { metin: "kayıt yazılır" }] }, { ad: "value ile atlama", ogeler: [{ metin: "gövde açılır" }, { metin: "sensör okunur", value: 7 }, { metin: "kayıt yazılır" }] }, ]; for (const liste of listeler) { console.log("[" + liste.ad + "]"); for (const [numara, metin] of numarala(liste)) console.log(" " + numara + ". " + metin); }
[varsayilan] 1. gövde açılır 2. sensör okunur 3. kayıt yazılır [start=5] 5. gövde açılır 6. sensör okunur [reversed] 3. gövde açılır 2. sensör okunur 1. kayıt yazılır [value ile atlama] 1. gövde açılır 7. sensör okunur 8. kayıt yazılır
reversed durumunda başlangıç değerinin madde sayısından geldiğine dikkat edilmelidir:
liste üç maddeliyse üçten başlar. start yazılırsa o değer geçerli olur.
Bu değerler yalnızca görünüm değildir; belgenin taşıdığı veridir. Uzun bir yordamın ikinci
sayfasında start="8" yazmak, numaraları sunum katmanında elle yazmaktan farklıdır:
sekizinci adım olduğu belgede bildirilmiş olur.
Numaraların biçimi —rakam, harf, roma sayısı— bir sunum kararıdır ve sunum katmanında belirlenir.
Tanım Listeleri
dl ögesi ad–değer çiftlerini taşır. dt adı, dd değeri işaretler. İkisi arasındaki
ilişki komşuluktan çıkar: bir dt ögesini izleyen dd ögeleri ona aittir.
<dl> <dt>Kuruluş yüksekliği</dt> <dd>1840 m</dd> <dt>Ölçüm aralığı</dt> <dd>10 dakika</dd> <dt>Sıcaklık</dt> <dt>Bağıl nem</dt> <dd>Aynı sensör gövdesinde ölçülür.</dd> </dl>
Son grup, birden çok adın tek bir açıklamayı paylaşabildiğini gösterir. Tersi de
geçerlidir: bir ada birden çok dd ögesi verilebilir.
Bir çifti tek bir birim olarak gruplamak gerekirse dt ve dd ögeleri bir div içine
alınabilir; bu, dl ögesinin doğrudan çocuğu olarak izin verilen tek ek ögedir.
Tanım listesi, adı düşündürdüğünün ötesinde kullanılır: bir künye, bir üstveri çizelgesi, bir soru–yanıt kümesi de ad–değer yapısındadır. Ölçüt sözlük olmak değil, her maddenin bir adı ve ona bağlı bir değeri olmasıdır.
İç İçe Listeler
Bir alt liste, üst listenin maddesinin içine yazılır — maddeler arasına değil.
<ul> <li>Sıcaklık <ul> <li>Gövde sıcaklığı</li> <li>Toprak sıcaklığı</li> </ul> </li> <li>Bağıl nem</li> </ul>
Alt listeyi li ögeleri arasına, doğrudan ul ögesinin çocuğu olarak yazmak yapıyı
bozar: alt liste hangi maddeye ait olduğunu bildirmez. Görünüm çoğu durumda benzer
kalacağı için kusur gözden kaçar; ekran okuyucuda ise iç içelik yanlış duyurulur.
İç içe yazımda kapanış etiketlerinin yazılması özellikle önemlidir. Dış maddenin kapanışı
yazılmazsa, kendiliğinden kapanma kuralı alt listenin bitiminde değil, sonraki li
açılışında işler; sonuç genellikle beklenendir ama kaynak metin yanıltıcı hâle gelir.
Listenin Duyurduğu Bilgi
Liste ögesinin değeri madde imlerinde değil, taşıdığı sayımdadır. Ekran okuyucular bir listeye girildiğinde madde sayısını ve o an kaçıncı maddede olunduğunu duyurur. Aynı içeriği ard arda paragraflar olarak yazmak bu bilgiyi yok eder: kullanıcı kaç maddenin olduğunu ancak sonuna vardığında öğrenir.
Bu ölçüt, listenin ne zaman kullanılmayacağını da belirler. Tek maddelik bir liste bir sayım bilgisi taşımaz ve yalnızca girinti için yazılmışsa gereksizdir. Her satırı ayrı bir liste olan bir yapı da aynı biçimde yanıltıcıdır: sayım her seferinde bire iner.
İki boyutlu veri de liste değildir. Her maddenin birden çok alanı varsa —her ölçümün saati, değeri ve birimi gibi— yapı bir çizelgedir ve konunun son dersinde ele alınacak tablo ögeleriyle yazılır. Listeyi tabloya çeviren ölçüt, maddelerin karşılaştırılabilir alanlara bölünüp bölünmediğidir.
İstasyon Belgesinde
Ölçüm istasyonu sayfasının iki listesi vardır ve türleri farklıdır:
<h2>Ölçülen Büyüklükler</h2> <ul> <li>Sıcaklık</li> <li>Bağıl nem</li> <li>Rüzgâr hızı</li> <li>Yağış</li> </ul> <h2>Kalibrasyon Yordamı</h2> <ol> <li>Gövde kapağı açılır.</li> <li>Sensör bağlantıları sökülmeden okuma alınır.</li> <li>Referans değerle karşılaştırılır.</li> <li>Sapma kaydedilir ve gövde kapatılır.</li> </ol>
Ölçülen büyüklüklerin sırası anlam taşımaz; kalibrasyon adımlarınınki taşır. Ayrım, iki ögenin görünümüyle değil, içeriğin doğasıyla verilmiştir.
Özet
- Sırasız liste sıranın anlamsız, sıralı liste anlamlı olduğu durumdadır; tanım listesi ad–değer çiftlerini taşır.
liögesi yalnızca bir liste ögesinin doğrudan çocuğu olabilir; liste ögesinin doğrudan çocuğu olarak metin yazılamaz.- Sıralı listede
start,reversedvevaluenumaralandırmayı belirler;valueyazıldığında sonraki maddeler oradan devam eder. - Tanım listesinde bir ada birden çok değer, bir değere birden çok ad bağlanabilir; ilişki komşuluktan çıkar.
- Alt liste, ait olduğu maddenin içine yazılır; maddeler arasına yazmak iç içelik bilgisini bozar.
Sonraki Adım
Listeler içeriği gruplandırdı ama belge hâlâ kendi içine kapalıdır: başka bir belgeye geçmenin yolu yoktur. Sonraki ders bağlantıları ele alır ve göreli bir adresin nasıl çözüldüğünü —hangi tabana göre, hangi kuralla— gerçek çözümleme çıktıları üzerinden gösterir.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.