İçeriğe geç
academia.sh

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, reversed ve value numaralandırmayı belirler; value yazı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.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat