<?xml version='1.0' encoding='UTF-8'?>

<div1 id="tables">
  <indexterm><primary>tablolar</primary></indexterm>
  <head>Tablolar</head>
  <div2 id="tables1">
    <head>Tablolara giriş</head>

<p>Tablolar veriler arasındaki ilişkileri gesterir. Belge yazarları bu ilişkileri <termref def="doclanguage">belge dilinde</termref> ve sunumlarını biçembent olarak iki yolla belirtirler: görsel olarak ve işitsel olarak.</p>

<p>Yazarlar bir tablonun görsel biçimini gözelerin yatay ve düşey olarak sıralandığı bir dikdörtgen olarak belirtebilirler. Göze sıraları ve sütunları sıra ve sütun grupları olarak düzenlenebilir. Sıralar, sütunlar, sıra grupları, sütun grupları ve gözeler çevrelerine çizilmiş kenar çizgilerine sahip olabilirler  (BB2'de iki kenar çizgisi modeli vardır).  Yazarlar, veri için yatay ve düşey hizalamayı her göze için ayrı ayrı belirtebilecekleri gibi bir sıra veya sütundaki tüm gözeler için ortak olarak da belirtebilirler.</p>

<ednote><edtext>Belirtimde, metin satırları ile tablo satırlarını ayırdedebilmek için "tablo satırı" yerine "tablo sırası" terimi kullanılmıştır. Bunu yapmasaydım, bir gözenin birden fazla hangi tür satırlara (satırlara mı sıralara mı?) yayıldığını ayırdetmek zor olacaktı.</edtext></ednote>

<p>Yazarlar ayrıca, bir tablonun verisinin ve başlıklarının nasıl seselendirileceğini belirtebilirler yani tablonun işitsel oluşumunu da belirleyebilirler.  Yazarlar belge dilinde gözelere ve göze gruplarına isim verebilir ve böylece işitsel oluşturma sırasında göze isimleri göze verisinden önce okunur. Böylelikle tablo işitsel olarak belli bir düzene sokulmuş olur: tabloyu işitsel olarak tarayan kullanıcılar önce başlıkları sonra veriyi duyarlar.</p>

<example>
<p>HTML 4.0 için yazılmış üç sıralı ve üç sütunlu basit bir tablo örneği:</p>

<eg><![CDATA[<table>
<caption>Basit bir 3x3 tablo örneği</caption>
<tr id="row1">
   <th>Başlık 1      <td>Göze 1        <td>Göze 2
<tr id="row2">
   <th>Başlık 2      <td>Göze 3        <td>Göze 4
<tr id="row3">
   <th>Başlık 3      <td>Göze 5        <td>Göze 6
</table>]]></eg>

<p>Bu kod bir tablo (<htmltag>table</htmltag> elemanı) oluşturur; üç sırası (<htmltag>tr</htmltag> elemanları), üç başlık gözesi (<htmltag>th</htmltag> elemanları) ve altı tane veri gözesi (<htmltag>td</htmltag> elemanları) bulunmaktadır. Bu örnekte üç sütunun örtük olarak belirtildiğine dikkat ediniz: tabloda başlık ve veri gözelerinin gerektirdiği kadar sütun vardır.</p>

<p>Aşağıdaki kural başlık gözesindeki metni yatayda ortalar ve veriyi kalın yazıtipi ile sunar:</p>

<eg>th { text-align: center; font-weight: bold }</eg>

<p>Aşağıdaki kurallar başlık gözelerinin metinlerini düşeyde taban çizgilerine göre hizalar, veri gözelerindeki verileri de düşeyde ortalar:</p>

<eg>th { vertical-align: baseline }
td { vertical-align: middle }</eg>

<p>Aşağıdaki kurallar üst sıranın 3 piksellik kesintisiz mavi bir kenar çizgisi ile çevrileceğini, diğer sıraların ise 1 piksel kalınlığında kesintisiz siyah bir kenar çizgisi ile çevrileceğini belirtir:</p>

<eg>table   { border-collapse: collapse }
tr#row1 { border-top: 3px solid blue }
tr#row2 { border-top: 1px solid black }
tr#row3 { border-top: 1px solid black }</eg>

<p>Bununla birlikte, kenar çizgilerinin sıraların yanyana geldiği kenarlarda üstüste bineceğine dikkat ediniz. 1. ve 2. sıralar arasında kalan sıra çizgisi ne renkte ve hangi kalınlıkta olacaktır? Bunu <specref ref="border-conflict-resolution"/> bölümünde açıklayacağız.</p>

<p>Aşağıdaki kural tablo başlığını tablonun yukarısına koyar:</p>

<eg>caption { caption-side: top }</eg>

<p>Son olarak, aşağıdaki kuralla, işitsel olarak oluşturma sırasında her veri sırası "Başlık", "Veri", "Veri" şeklinde (başlık bir kere) okunacaktır:</p>

<eg>th { speak-header: once }</eg>

<p>Örneğin, ilk sıra "Başlık1 Göze1 Göze2" olarak okunacaktır. Halbuki şu kuralla:</p>

<eg>th { speak-header: always }</eg>

<p>ilk sıra "Başlık1 Göze1 Başlık1 Göze2" olarak okunacaktır.</p>
</example>

<p><indexterm><primary>elemanları tablo parçalarına eşleme</primary></indexterm>
Önceki örnekte BB'nin HTML 4.0 ile nasıl çalıştığı gösterilmiştir; HTML 4.0'da tablo elemanlarının (<htmltag>table</htmltag>, <htmltag>caption</htmltag>, <htmltag>thead</htmltag>, <htmltag>tbody</htmltag>, <htmltag>tfoot</htmltag>, <htmltag>col</htmltag>, <htmltag>colgroup</htmltag>, <htmltag>th</htmltag>, <htmltag>td</htmltag>) anlambilgisi iyi tanımlanmıştır. Başka belge dillerinde (örneğin XML belgelerde) önceden tanımlanmış tablo elemanları olabilir. Diğer yandan BB2 <property>display</property> niteliği üzerinden, belge yazarlarına tablo bileşenlerini belge dili elemanlarına eşleme imkanını da tanır. Örneğin aşağıdaki kural FOO elemanının HTML <htmltag>table</htmltag> elemanı gibi, BAR elemanının da <htmltag>caption</htmltag> elemanı gibi davranmasını sağlar:</p>

<eg>FOO { display : table }
BAR { display : table-caption }</eg>

<p><indexterm><primary>tablo elemanı</primary></indexterm>
<indexterm><primary>tablo iç elemanı</primary></indexterm>
Aşağıdaki bölümde çeşitli tablo bileşenlerini inceleyeceğiz. <termdef id="dt-table-element" term="Tablo elemanı">Bu belirtimde, bir tablo oluşturabilen her elemana <term>tablo elemanı</term> denecektir</termdef>. <termdef id="dt-internal-table-element" term="Tablo iç elemanı"><term>Tablo iç elemanı</term> dendiğinde ise bir sıra, sıra grubu, sütun, sütun grubu veya göze üreten bir elemandan bahsediyor olacağız</termdef>.</p>
</div2>

<div2 id="tables2">
<head>Biçembent Tablo Modeli</head>

<p>Biçembent tablo modeli, HTML 4.0 tablo modeline dayanır (tablo yapısının fiziksel tablo yerleşimine uyduğu model). Bu modelde, bir tablo isteğe bağlı bir tablo başlığı ile bir miktar sıra ve sütundan oluşur. Tablo modeli, yazarların sıraları sütunlardan önce belirttikleri için "sıra-başat" tablo modelidir (Ç.N.: T<sub>E</sub>X belge dilinde, pek kullanılmıyor olsa da bir "sütun-başat" tablo modeli vardır). Her sıradaki ilk göze ilk sütuna, 2. göze 2. sütuna, vs. denk getirilerek sütunlar sıralardan elde edilir. Sıralar ve sütunlar yapısal olarak gruplanabilir ve bu gruplama sunumda yansıtılır (örn, bir sıra grubun kenar çizgisi ile sarmalanır).</p>

<p>Dolayısıyla, tablo modeli tablolar, tablo başlıkları, sıralar, sıra grupları, sütunlar, sütun grupları ve gözelerden oluşur.</p>

<p>Biçembent modeli <termref def="doclanguage">belge dili</termref>nin bu bileşenlere karşı düşen elemanlar içermesini gerektirmez. Önceden tanımlı tablo elemanları olmayan belge dilleri (örn, XML) için yazarların belge dilindeki elemanları tablo bileşenlerine eşlemeleri gerekir; bu işlem <property>display</property> niteliği ile yapılır. Aşağıdaki <property>display</property> değerleri ile tablo anlambilgisi herhangi bir elemana atanabilir:</p>

<varlist><gitem>
<label id="value-def-table">
<indexterm><primary><literal>table</literal></primary></indexterm>
<code>table</code> (HTML'de: <htmltag>table</htmltag>)</label>
<def><p>Elemanın <termref def="block-level">blok seviyesinden</termref> bir tablo tanımladığını belirtir: eleman <titleref ref="block-formatting">blok biçimleme bağlamının</titleref> bir üyesi olan dikdörtgen biçiminde bir bloktur.</p></def>
</gitem>
<gitem>
<label id="value-def-inline-table">
<indexterm><primary><literal>inline-table</literal></primary></indexterm>
<code>inline-table</code> (HTML'de: <htmltag>table</htmltag>)</label>
<def><p>Elemanın <termref def="inline-level">satıriçi seviyeden</termref> bir tablo tanımladığını belirtir: eleman <titleref ref="inline-formatting">satıriçi biçimleme bağlamının</titleref>  bir üyesi olan dikdörtgen biçiminde bir bloktur.</p></def>
</gitem>
<gitem>
<label id="value-def-table-row">
<indexterm><primary><literal>table-row</literal></primary></indexterm>
<code>table-row</code> (HTML'de: <htmltag>tr</htmltag>)</label>
<def><p>Elemanın bir göze sırası tanımladığını belirtir.</p></def>
</gitem>
<gitem>
<label id="value-def-table-row-group">
<indexterm><primary><literal>table-row-group</literal></primary></indexterm>
<code>table-row-group</code> (HTML'de: <htmltag>tbody</htmltag>)</label>
<def><p>Elemanın bir veya daha fazla sırayı grupladığını belirtir.</p></def>
</gitem>
<gitem>
<label id="value-def-table-header-group">
<indexterm><primary><literal>table-header-group</literal></primary></indexterm>
<code>table-header-group</code> (HTML'de: <htmltag>thead</htmltag>)</label>
<def><p><literal>table-row-group</literal> gibidir, ancak görsel biçimleme bakımından, sıra grubu tüm diğer sıra ve sıra gruplarından önce ve olası bir üst tablo başlığından sonra gösterilir. Yazıcı kullanıcı arayüzleri çok sayıda sayfaya yayılan bir tablonun başlık sıralarını her sayfanın başında yineleyebilir.</p></def>
</gitem>
<gitem>
<label id="value-def-table-footer-group">
<indexterm><primary><literal>table-footer-group</literal></primary></indexterm>
<code>table-footer-group</code> (HTML'de: <htmltag>tfoot</htmltag>)</label>
<def><p><literal>table-row-group</literal> gibidir, ancak görsel biçimleme bakımından, sıra grubu tüm diğer sıra ve sıra gruplarından sonra ve bir olası alt tablo başlığından önce gösterilir. Yazıcı kullanıcı arayüzleri çok sayıda sayfaya yayılan bir tablonun ayakucu sıralarını her sayfanın sonunda yineleyebilir.</p></def>
</gitem>
<gitem>
<label id="value-def-table-column">
<indexterm><primary><literal>table-column</literal></primary></indexterm>
<code>table-column</code> (HTML'de: <htmltag>col</htmltag>)</label>
<def><p>Elemanın bir göze sütunu tanımladığını belirtir.</p></def>
</gitem>
<gitem>
<label id="value-def-table-column-group">
<indexterm><primary><literal>table-column-group</literal></primary></indexterm>
<code>table-column-group</code> (HTML'de: <htmltag>colgroup</htmltag>)</label>
<def><p>Elemanın bir veya daha fazla sütunu grupladığını belirtir.</p></def>
</gitem>
<gitem>
<label id="value-def-table-cell">
<indexterm><primary><literal>table-cell</literal></primary></indexterm>
<code>table-cell</code> (HTML'de: <htmltag>td</htmltag>)</label>
<def><p>Elemanın bir tablo gözesi tanımladığını belirtir.</p></def>
</gitem>
<gitem>
<label id="value-def-table-caption">
<indexterm><primary><literal>table-caption</literal></primary></indexterm>
<code>table-caption</code> (HTML'de: <htmltag>caption</htmltag>)</label>
<def><p>Tablo için başlık belirtir.</p></def>
</gitem>
</varlist>

<p><property>display</property> niteliğinde
<literal>table-column</literal> veya <literal>table-column-group</literal> belirtilmiş elemanlar oluşturulmaz (sanki <code>display: none</code> atanmış gibi işlem yapılır), ancak belirtildikleri sütunlar için belli bir biçemi teşvik eden öznitelikler içerebildiklerinden dolayı yararlıdırlar.</p>

<p>Eklerdeki <titleref ref="sample">HTML 4.0 için öntanımlı biçembent</titleref>, aşağıdaki değerlerin kullanımını taklit eder:</p>

<eg>table    { display: table }
tr       { display: table-row }
thead    { display: table-header-group }
tbody    { display: table-row-group }
tfoot    { display: table-footer-group }
col      { display: table-column }
colgroup { display: table-column-group }
td, th   { display: table-cell }
caption  { display: table-caption }</eg>

<p>HTML tabloları geriye uyumlu başka algoritmalarla oluşturulduğundan kullanıcı arayüzleri, HTML elemanları için belirtilen bu <property>display</property> değerlerini <termref def="ignore">yoksayabilirler</termref>.</p>

<div3 id="anonymous-boxes">
<head>Anonim tablo nesneleri</head>

<p>HTML dışında kalan belge dilleri BB2 tablo modelindeki tüm bileşenleri içermeyebilir. Bu durumda, "eksik" bileşenlerin tablo modeli için çalışacağı kabul edilmelidir. Eksik bileşenler aşağıdaki kurallara göre <termref def="anonymous">anonim</termref> nesneler üretirler:</p>

<p>Herhangi bir tablo elemanı, kendisine gerekli olan <literal>table</literal>/<literal>inline-table</literal> bileşeni, bir <literal>table-row</literal> bileşeni ve bir <literal>table-cell</literal> bileşenine karşı düşen en azından iç içe üç nesneden oluşan anonim tablo nesnelerini özdevinimli olarak üretecektir.</p>

<olist>
<item><p>Eğer <literal>table-cell</literal> bileşenine sahip T'nin ebeveyni olan P bir <literal>table-row</literal> bileşenine sahip değilse P ile T arasında <literal>table-row</literal> bileşenine karşı düşen bir nesne üretilecektir. Bu nesne, T'nin (belge ağacındaki) ardışık <literal>table-cell</literal> bileşenli kardeşlerinin  tümünü kapsayacaktır.</p></item>

<item><p>Eğer bir <literal>table-row</literal> bileşenine sahip T'nin ebeveyni olan P bir <literal>table</literal>, <literal>inline-table</literal> veya <literal>table-row-group</literal> bileşenine sahip değilse P ile T arasında <literal>table</literal> bileşenine karşı düşen bir nesne üretilecektir. Bu nesne bir <literal>table</literal> bileşenine sahip ebeveyn gerektiren T'nin (belge ağacındaki) ardışık kardeşlerinin tümünü kapsayacaktır: <literal>table-row</literal>, <literal>table-row-group</literal>, <literal>table-header-group</literal>, <literal>table-footer-group</literal>, <literal>table-column</literal>, <literal>table-column-group</literal> ve <literal>table-caption</literal> bileşenine sahip kardeşler.</p></item>

<item><p>Eğer bir <literal>table-column</literal> bileşenine sahip T'nin ebeveyni olan P bir <literal>table</literal>, <literal>inline-table</literal> veya <literal>table-column-group</literal> bileşenine sahip değilse P ile T arasında <literal>table</literal> bileşenine karşı düşen bir nesne üretilecektir. Bu nesne bir <literal>table</literal> bileşenine sahip ebeveyn gerektiren T'nin (belge ağacındaki) ardışık kardeşlerinin tümünü kapsayacaktır: <literal>table-row</literal>, <literal>table-row-group</literal>, <literal>table-header-group</literal>, <literal>table-footer-group</literal>, <literal>table-column</literal>, <literal>table-column-group</literal> ve <literal>table-caption</literal> bileşenine sahip kardeşler.</p></item>

<item><p>Eğer bir <literal>table-row-group</literal> (veya <literal>table-header-group</literal> ya da  <literal>table-footer-group</literal>) bileşenine sahip T'nin ebeveyni olan P bir  <literal>table</literal> veya <literal>inline-table</literal> bileşenine sahip değilse P ile T arasında <literal>table</literal> bileşenine karşı düşen bir nesne üretilecektir. Bu nesne bir <literal>table</literal> bileşenine sahip ebeveyn gerektiren T'nin (belge ağacındaki) ardışık kardeşlerinin tümünü kapsayacaktır: <literal>table-row</literal>, <literal>table-row-group</literal>, <literal>table-header-group</literal>, <literal>table-footer-group</literal>, <literal>table-column</literal>, <literal>table-column-group</literal> ve
<literal>table-caption</literal> bileşenine sahip kardeşler.</p></item>

<item><p>Eğer bir <literal>table</literal> (veya <literal>inline-table</literal>) bileşenine sahip P'nin çocuğu olan T bir <literal>table-row-group</literal>, <literal>table-header-group</literal>, <literal>table-footer-group</literal> veya <literal>table-row</literal> bileşenine sahip değilse P ile T arasında <literal>table-row</literal> bileşenine karşı düşen bir nesne üretilecektir. Bu nesne T'nin bir <literal>table-row-group</literal>, <literal>table-header-group</literal>, <literal>table-footer-group</literal> veya <literal>table-row</literal> bileşenine sahip olmayan tüm ardışık kardeşlerini kapsayacaktır.</p></item>

<item><p>Eğer bir <literal>table-row-group</literal> (veya <literal>table-header-group</literal> ya da <literal>table-footer-group</literal>) bileşenine sahip P'nin çocuğu olan T bir <literal>table-row</literal> bileşenine sahip değilse P ile T arasında <literal>table-row</literal> bileşenine karşı düşen bir nesne üretilecektir. Bu nesne T'nin bir <literal>table-row</literal> bileşenine sahip olmayan tüm ardışık kardeşlerini kapsayacaktır.</p></item>

<item><p>Eğer bir <literal>table-row</literal> bileşenine sahip P'nin çocuğu olan T bir <literal>table-cell</literal> bileşenine sahip değilse P ile T arasında <literal>table-cell</literal> bileşenine karşı düşen bir nesne üretilecektir. Bu nesne T'nin bir <literal>table-cell</literal> bileşenine sahip olmayan tüm ardışık kardeşlerini kapsayacaktır.</p></item>
</olist>

<example>
<p>Bu XML örneğinde, HBOX elemanını bir <literal>table</literal> bileşenli elemanın içereceği varsayılmıştır:</p>

<eg><![CDATA[<HBOX>
  <VBOX>George</VBOX>
  <VBOX>4287</VBOX>
  <VBOX>1998</VBOX>
</HBOX>]]></eg>

<p>çünkü ilişkili biçembent şöyledir:</p>

<eg>HBOX { display: table-row }
VBOX { display: table-cell }</eg>
</example>

<example>
<p>Bu örnekte, ROW'lardaki metinleri üç <literal>table-cell</literal> bileşenli elemanın içereceği varsayılmıştır. Böyle, metnin anonim satıriçi çerçevelerce kapsanması <specref ref="anonymous"/> bölümünde açıklanmıştır:</p>

<eg><![CDATA[<STACK>
  <ROW>Bu <D>üst</D> sıra.</ROW>
  <ROW>Bu <D>orta</D> sıra.</ROW>
  <ROW>Bu <D>alt</D> sıra.</ROW>
</STACK>]]></eg>

<p>Biçembent:</p>

<eg>STACK { display: inline-table }
ROW   { display: table-row }
D     { display: inline; font-weight: bolder }</eg>
</example>

<p>HTML kullanıcı arayüzlerinin yukarıdaki kurallara göre anonim nesneler üretmesi gerekli değildir.</p>
</div3>
</div2>

<div2 id="tables3"><head>Sütun seçiciler</head>
<p>Tablo gözeleri iki bağlama ait olabilirler: sıralar ve sütunlar. Bununla birlikte kaynak belgedeki gözeler daima sıraların astsallarıdır, sütunların değil. Yine de, gözeler bazı bakımlardan sütunların niteliklerinden etkilenebilirler.</p>

<p>Sütun ve sütun grubu elemanlarına şu nitelikler uygulanır:</p>

<varlist><gitem>
<label><property>border</property></label>
<def><p>Sütunlara kenar çizgisi niteliklerinin uygulanabilmesi için gerek ve yeter koşul, tablo elemanında <property>border-collapse</property> niteliğine <literal>collapse</literal> değerinin atanmış olmasıdır. Bu durumda, sütun ve sütun gruplarına atanan kenar çizgileri, her gözeye uygulanacak kenar çizgisi biçemini seçen <termref def="border-conflict-resolution">tutarsızlık çözümleme algoritmasına</termref> girdi olurlar.</p></def>
</gitem>
<gitem>
<label><property>background</property></label>
<def><p>Sütunlardaki gözelerin artalanlarına artalan niteliklerinin uygulanabilmesi için gerek ve yeter koşul, sıranın ve gözenin her ikisinin de artalanlarının saydam olmasıdır. <specref ref="table-layers"/> bölümüne bakınız.</p></def>
</gitem>
<gitem>
<label><property>width</property></label>
<def><p><property>width</property> niteliği sütun için asgari genişlik belirtir.</p></def>
</gitem>
<gitem>
<label><property>visibility</property></label>
<def><p>Eğer bir sütunun görünürlüğü (<property>visibility</property>) için <literal>collapse</literal> değeri belirtilmişse sütundaki hiçbir göze oluşturulmaz ve diğer gözelerle birleşen gözeler kırpılır. Bundan başka, tablo genişliği, oluşturulmayan sütun genişliği kadar daraltılır. Aşağıdaki <specref ref="dynamic-effects"/> bölümüne bakınız. <property>visibility</property> niteliğinin diğer değerleri etkisizdir.</p></def>
</gitem>
</varlist>

<example>
<p>Aşağıdaki kurallarla sütun niteliklerine bazı değerler atanmaktadır. İlk iki kural birlikte HTML 4.0'ın <code>rules="cols"</code> öznitelik atamasını gerçeklemektedir. Üçünce kural "totals" sütununun rengini mavi yapar. Son iki kural <termref def="fixed-table-layout">sabit yerleşim algoritmasını</termref> kullanarak sabit boyutlu bir sütunun nasıl yapılacağını göstermektedir.</p>

<eg>col   { border-style: none solid }
table { border-style: hidden }
col.totals { background: blue }
table { table-layout: fixed }
col.totals { width: 5em }</eg>
</example>
</div2>

<div2 id="tables4"><head>Görsel Biçimleme Modelinde Tablolar</head>

<p><specref ref="visuren"/> gereğince, bir tablo <termref def="block-level">blok seviyesinden</termref> veya <termref def="replaced-element">yerleştirilen</termref> <termref def="inline-level">satıriçi seviyeden</termref> bir eleman gibi davranabilir. Tabloların da içerikleri, kenar çizgileri, iç ve dış boşlukları vardır.</p>

<p>Her iki durumda da, tablo elemanı, tablo çerçevesinin kendini ve (varsa) tablo başlığı çerçevesini içeren bir <termref def="anonymous">anonim</termref> çerçeve üretir. Tablo ve tablo başlığı çerçeveleri kendi içerik, kenar çizgisi, iç ve dış boşluk alanlarını korurlar ve dikdörtgen anonim çerçevenin boyutları her ikisini de içerecek en küçük boyutlarda olur. Tablo başlığı çerçevesinin tablo çerçevesine dokunduğu yerdeki düşey kenar dış boşlukları örtüşür. Tablonun yeniden konumlanması gerektiğinde, sadece tablo çerçevesi değil, anonim çerçeve bütünüyle hareket ettirilmelidir; böylece tablo başlığı tablo ile birlikte hareket etmiş olur.</p>

<figure id="img-top-caption">
<graphic source="images/top-caption.png" alt="Üstünde başlığı bulunan bir tablo; her ikisinin de kenar dış boşlukları vardır ve düşey kenar dış boşlukları aynı kalırken aralarında kalan kenar dış boşlukları örtüşmektedir." />
[<loc href="images/longdesc/top-caption-desc.html" title="Üstünde başlığı bulunan bir tablo örneğinin geniş açıklaması">Açıklama</loc>]
<caption>Başlıklı bir tablo resmi; başlığın alt kenar dış boşluğu ile tablonun üst kenar dış boşluğu örtüşürler.</caption>
</figure>


<div3 id="tables41"><head>Tablo başlığının konumu ve hizalanması</head>

<indexterm><primary><property>caption-side</property></primary></indexterm>
<indexterm><primary>nitelikler</primary> <secondary><property>caption-side</property></secondary></indexterm>
<propinfo>
  <propname>caption-side</propname>
  <value><literal>top</literal> | <literal>bottom</literal> | <literal>left</literal> | <literal>right</literal> | <literal>inherit</literal></value>
  <initial><literal>top</literal></initial>
  <applies-to><literal>table-caption</literal> elemanları</applies-to>
  <inherited>evet</inherited>
  <percentages/>
  <media><termref def="visual-media-group">görsel</termref></media>
</propinfo>

<p>Bu nitelik tablo çerçevesine göre tablo başlık çerçevesinin konumunu belirtir. Değerlerin anlamları şöyledir:</p>

<varlist><gitem>
<label><code>top</code></label>
<def><p>Tablo başlık çerçevesi tablo çerçevesinin yukarısına yerleştirilir.</p></def>
</gitem><gitem>
<label><code>bottom</code></label>
<def><p>Tablo başlık çerçevesi tablo çerçevesinin aşağısına yerleştirilir.</p></def>
</gitem><gitem>
<label><code>left</code></label>
<def><p>Tablo başlık çerçevesi tablo çerçevesinin soluna yerleştirilir.</p></def>
</gitem><gitem>
<label><code>right</code></label>
<def><p>Tablo başlık çerçevesi tablo çerçevesinin sağına yerleştirilir.</p></def>
</gitem></varlist>

<p><literal>table</literal> bileşenine sahip bir elemandan önceki veya sonraki tablo başlık elemanı, (1) tablodan miras alınabilen niteliklerle miras alınmış olması ve (2) tablodan önceki bir <literal>compact</literal> veya <literal>run-in</literal> bileşenli bir elemanın amacı gereği bir blok çerçevesi olarak ele alınmaması durumu hariç olmak üzere, büyük çoğunlukla tablodan önceki veya sonraki bir blok elemanıymış gibi biçimlenir.</p>

<p>Bir tablo çerçevesinin yukarısında veya aşağısında kalan bir tablo başlığı genişlik hesaplamaları için de ayrıca bir blok çerçevesi olarak davranır; genişlik, tablo çerçevesinin taşıyıcı blokunun genişliğine göre hesaplanır.</p>

<p>Diğer yandan, bir tablo çerçevesinin solunda veya sağında kalan bir tablo başlığı için, <literal>auto</literal>'dan farklı bir değer atanmış bir <property>width</property> niteliği genişliği açıkça belirler; <literal>auto</literal> değeri ise kullanıcı arayüzüne "makul bir genişlik" seçebileceğini belirtir. Bu, "olası en dar çerçeve"den "tek bir sıra"ya kadar değişiklik gösterebilir, bu bakımdan, kullanıcıların sol ve sağ tablo başlık genişlikleri için <literal>auto</literal> değerini belirtmemelerini öneriyoruz.</p>

<p>Başlık çerçevesinin içinde başlık içeriğini yatayda hizalamak için <property>text-align</property> niteliği kullanılır. Tablo çerçevesine göre bir sol veya sağ başlık çerçevesinin düşeyde hizalanması için <property>vertical-align</property> niteliği kullanılır. Bu durumda en anlamlı değerler <literal>top</literal>, <literal>middle</literal> ve <literal>bottom</literal> değerleridir. Bunlar dışında kalan tüm değerler <property>top</property> belirtilmiş gibi ele alınır.</p>

<example>
<p>Bu örnekte, <property>caption-side</property> niteliği başlığı tablonun aşağısına yerleştirmektedir. Başlık tablo genişliği kadar geniş olacak ve içeriği sola hizalanacaktır:</p>

<eg>caption { caption-side: bottom;
          width: auto;
          text-align: left }</eg>
</example>

<example>
<p>Aşağıdaki örnekte bir başlığın nasıl sol kenar dış boşluğuna konacağı gösterilmiştir. Tablonun kendisi sol ve sağ kenar dış boşluklarına <literal>auto</literal> değeri atanarak ortalanmakta ve tablo ile başlık birlikte bir anonim çerçeve olarak başlık genişliği kadar sol kenar dış boşluğuna kaydırılmaktadır.</p>

<eg>body {
    margin-left: 8em
}
table {
    margin-left: auto;
    margin-right: auto
}
caption {
    caption-side: left;
    margin-left: -8em;
    width: 8em;
    text-align: right;
    vertical-align: bottom
}</eg>

<p>Tablo genişliğinin ona ayrılan genişlikten daha dar olduğu varsayımıyla biçimleme şöyle birşey üretirdi:</p>

<figure id="img-left-caption">
<graphic source="images/left-caption.png" alt="Sol ve sağ kenar dış boşluklarına göre ortalanmış ve sayfanın sol kenar dış boşluğuna bir başlık yerleştirilmiş bir tablonun resmi." />
[<loc href="images/longdesc/left-caption-desc.html" title="Başlığı solunda yeralan bir tablonun gösterildiği resmin geniş açıklaması">Açıklama</loc>]
<caption>Başlığı negatif bir <property>margin-left</property> niteliği ile ilk taşıyıcı blokun sol kenar dış boşluğuna itilmiş ve kendisi taşıyıcı blok genişliğine göre ortalanmış bir tablo.</caption>
</figure>
</example>
</div3>
</div2>

<div2 id="tables5"><head>Tablo içeriğinin görsel yerleşimi</head>

<p><termref def="doclanguage">Belge dilinin</termref> diğer elemanları gibi dahili tablo elemanları da içeriği ve kenar çizgileri olan diktörtgen <titleref ref="box-dimensions">çerçeveler</titleref> üretirler. Gözelerin ayrıca kenar iç boşlukları da vardır. Dahili tablo elemanlarının kenar dış boşlukları yoktur.</p>

<p>Bu çerçevelerin görsel yerleşimi, sıra ve sütunların düzensiz olarak yer aldığı bir dikdörtgenden oluşur. Her çerçeveyi oluşturan gözelerin sayısı aşağıdaki kurallara göre saptanır. Bu kurallar
4.0 veya daha önceki HTML sürümlerine uygulanmaz; sıra ve sütun birleşimlerinde HTML kendi sınırlamalarını dayatır.</p>

<olist>
<item><p>Her sıra çerçevesi bir çizelge gözeleri sırasından oluşur. Sıra çerçeveleri hep birlikte, belgedeki yer alış sırasına göre yukarıdan aşağıya bir sıra izleyerek tabloyu doldururlar (yani bir tablo, sıra elemanı sayısınca  çizelge sırasından oluşur).</p></item>

<item><p>Bir sıra grubu içerdiği sıraların çizelge gözelerinden oluşur.</p></item>

<item><p>Bir sütun çerçevesi, çizelge gözelerinden oluşan bir veya daha fazla sayıda sütun içerir. Sütun çerçeveleri tabloda yer aldıkları sırayla yerleştirilirler. İlk sütun çerçevesi, tablo elemanının <property>direction</property> niteliğinin değerine bağlı olarak solda veya sağda yer alabilir.</p></item>

<item><p>Bir sütun grubu içerdiği sütunların çizelge gözelerinden oluşur.</p></item>

<item><p>Gözeler birden fazla sıraya veya sütuna yayılabilirler. (BB2, birleşik sıra ve sütunların sayısının nasıl saptanacağını tanımlamasa da bir kullanıcı arayüzü kaynak belge hakkında özel bilgilere sahip olabilir; BB'nin ileriki aşamalarında, bu bilgileri BB sözdizimiyle ifade etmenin yolları sağlanabilir.) Her göze bu bakımdan birden fazla çizelge gözesi genişlikte ve yükseklikte olabilen bir dikdörtgen çerçevedir. Bu dikdörtgenin üst sırası gözenin ebeveyni tarafından belirtilen sıradadır. Dikdörtgen mümkün olduğunca sola uzak olmalı fakat başka göze çerçeveleri ile üst üste gelmemeli ve kaynak belgede kendisiyle aynı sırada bulunan önceki gözelerin sağında olmalıdır; bu cümledeki sağ ve sol tablonun <property>direction</property> niteliğinin değerinin <literal>ltr</literal> olduğu duruma karşılıktır, <property>direction</property> niteliğinin değerinin <literal>rtl</literal> olduğu durumda cümledeki sağ ve sol yönleri yer değiştirir.</p></item>

<item><p>Bir göze çerçevesi bir tablonun son sıra veya sıra grubu çerçevesini aşamaz; kullanıcı arayüzleri böyle bir durumda göze çerçevesini tabloya sığacak şekilde kısaltmalıdır.</p></item>
</olist>

<note><p>Tablo gözeleri konumlanabilir fakat bu önerilmez: mutlak, sabit ve yüzen konumlama bir çerçeveyi akıştan kaldıran, tablo boyutunu etkileyen konumlamalardır.</p></note>

<example>
<p>Bu iki örnekten ilkinin bir HTML belgede bulunduğu varsayılmıştır:</p>

<eg><![CDATA[<table>
  <tr><td>1</td> <td rowspan="2">2</td> <td>3</td> <td>4</td></tr>
  <tr><td colspan="2">5</td></tr>
</table>]]></eg>

<eg><![CDATA[<tablo>
  <sıra>
    <göze>1</göze> <göze sırayay="2">2</göze> <göze>3</göze> <göze>4</göze>
  </sıra>
  <sıra>
    <göze sütunyay="2">5</göze>
  </sıra>
</tablo>]]></eg>

<p>İkinci tablo aşağıdaki şekilde sağdaki gibi biçimlenir. Bununla birlikte, HTML tabloların oluşturulması, HTML tarafından açıkça tanımlanmamıştır ve BB bu tanımlamayı yapmayı denemez. Kullanıcı arayüzleri de bu konuda özgürdür ve birinci örneği şekilde solda yer alan tablo gibi biçimleyebilirler.</p>

<figure id="img-table-overlap">
<graphic source="images/table-overlap.gif" alt="Üst üste binen ve binmeyen gözeleriyle iki tablo" />
[<loc href="images/longdesc/table-overlap-desc.html" title="Yapısal olarak üst üste binen gözelerin oluşturulmasını gösteren örneğin geniş açıklaması">Açıklama</loc>]
<caption>Solda hatalı bir HTML 4.0 tablonun nasıl oluşturulduğu, sağda ise HTML olmayan bir tablonun olası bir biçimlenişi görülmektedir.</caption>
</figure>
</example>

<div3 id="table-layers">
<head>Tablo katmanları ve saydamlık</head>

<p>Tablodaki gözelerin artalanlarını bulmak amacıyla, tablo elemanlarının üst üste altı katman oluşturduğunu varsayabiliriz. Bu durumda, bir tablo elemanının artalanını, üstündeki katmanların artalanları saydam olan görünür katmanlardan biri belirleyecektir.</p>

<figure id="img-tbl-layers">
<graphic source="images/tbl-layers.png" alt="Tablo katmanları şeması" />
[<loc href="images/longdesc/tbl-layers-desc.html" title="Göze artalanının hesaplanması örneğinin geniş açıklaması">Açıklama</loc>]
<caption>Tablo katmanları.</caption>
</figure>

<olist>
<item><p>En alttaki katman tek parçalık bir yüzey olup tablo çerçevesini göstermektedir. Diğer tüm çerçeveler gibi o da saydam olabilir.</p></item>

<item><p>Sonraki katman sütun gruplarını içerir. Sütun grupları tabloyu yukarıdan aşağı boydan boya kaplar fakat tablonun tüm enini kapsaması gerekli değildir.</p></item>

<item><p>Sütun gruplarının üzerinde sütun çerçevelerini ifade eden alanlar bulunur. Sütun grupları gibi sütunlar da tabloyu yukarıdan aşağı boydan boya kaplar fakat tablonun tüm enini kapsaması gerekli değildir.</p></item>

<item><p>Sonraki katman sıra gruplarını içerir. Sıra grupları tabloyu enine boydan boya kaplar. Sıra grupları hep birlikte tabloyu yukarıdan aşağıya kaplar.</p></item>

<item><p>Sondan bir önceki katman sıraları içerir. Sıralar ayrıca tablonun tamamını kaplar.</p></item>

<item><p>En üst katman gözeleri içerir. Şekilden de görüldüğü gibi, tüm sıralar aynı sayıda sütun içerse de her gözenin içeriği olmayabilir. Bu "boş" gözeler, <property>empty-cells</property> niteliklerinin değeri <literal>hide</literal> olduğu takdirde saydam olurlar.</p></item>
</olist>

<p>Tablo için <tt>border-collapse: separate</tt> belirtilmişse <property>border-spacing</property> niteliği tarafından belirtilen alanın artalanı daima tablo elemanının artalanı olacaktır. Ayrıntılar için <specref ref="separated-borders"/> bölümüne bakınız.</p>

<example>
<p>Aşağıdaki belgede, ilk sıra dört göze içermekte fakat altındaki sıra hiç göze içermemektedir. Bu yüzden, 2. sıraya yayılan sütun hariç, diğer gözelerde tablonun artalan rengi görünmektedir.</p>

<eg><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
  <head>
    <style type="text/css">
      TABLE { background: #ff0;
              border-collapse: collapse;}
      TD    { background: red;
              empty-cells: hide;
              border: double black }
    </style>
  </head>
  <body>
    <p>
    <TABLE>
      <TR>
        <TD> 1 </TD>
        <TD rowspan="2"> 2 </TD>
        <TD> 3 </TD>
        <TD> 4 </TD>
      </TR>
      <TR><TD></TD></TR>
    </TABLE>
  </body>
</html>]]></eg>

<p>Belge şöyle biçimlenmiş olabilir:</p>

<figure id="img-tbl-empty">
<graphic source="images/tbl-empty.gif" alt="Alt sırasında üç boş göze bulunan bir tablo" />
[<loc href="images/longdesc/tbl-empty-desc.html" title="Artalan hesabı örneğinin geniş açıklaması">Açıklama</loc>]
<caption>Alt sırasında üç boş göze bulunan bir tablo.</caption>
</figure>
</example>
</div3>

<div3 id="width-layout">
<head>Tablo genişlik algoritması: <property>table-layout</property> niteliği</head>

<p>BB, tablolar için "en iyi" yerleşimi tanımlamaz çünkü en iyinin ne olduğu biraz da zevk meselesidir. BB, bir tabloyu yerleştirirken kullanıcı arayüzlerinin uyması gereken kısıtlamalar tanımlamaz. Kullanıcı arayüzleri, "sabit yerleşim algoritması"nın seçilmesi durumu haricinde işlem neyi gerektiriyorsa o algoritmayı kullanmakta özgürdürler ve hızı doğruluğa/hassasiyete tercih edebilirler.</p>

<p>Bu bölümde açıklanan kurallar, <specref ref="Computing_widths_and_margins"/> bölümünde açıklanan genişlik hesaplamasına uygulanan kurallara üstün gelir. Özellikle, tablonun kenar dış boşlukları '0' ve genişlik <literal>auto</literal> olarak belirtilmişse tablo, taşıyıcı blokuna sığacak şekilde kendi kendini boyutlandıracaktır. Bununla birlikte, tablo için <property>width</property> niteliğinin hesaplanan değeri (aşağıdaki algoritmalar ve uygun olduğu takdirde kullanıcı arayüzüne bağlı diğer algoritmalar kullanılarak) bulunduktan sonra <specref ref="Computing_widths_and_margins"/> bölümünün diğer kısımları uygulanır. Bu yüzden bir tablo, örneğin, sol ve sağ kenar dış boşlukları için <literal>auto</literal> değeri belirtilerek ortalanabilir. </p>

<indexterm><primary><property>table-layout</property></primary></indexterm>
<indexterm><primary>nitelikler</primary> <secondary><property>table-layout</property></secondary></indexterm>
<propinfo>
  <propname>table-layout</propname>
  <value><literal>auto</literal> | <literal>fixed</literal> | <literal>inherit</literal></value>
  <initial><literal>auto</literal></initial>
  <applies-to><literal>table</literal> ve <literal>inline-table</literal> elemanları</applies-to>
  <inherited>hayır</inherited>
  <percentages/>
  <media><termref def="visual-media-group">görsel</termref></media>
</propinfo>

<p><property>table-layout</property> niteliği tablo gözelerini, sıralarını ve sütunlarını yerleştirmekte kullanılacak algoritmayı denetler. Değerlerin anlamları şöyledir:</p>

<varlist><gitem>
<label><code>fixed</code></label>
<def><p>Sabit tablo yerleştirme algoritması kullanılır.</p></def>
</gitem><gitem>
<label><code>auto</code></label>
<def><p>Özdevinimli tablo yerleştirme algoritması kullanılır.</p></def>
</gitem></varlist>

<p>Bu iki algoritma aşağıda açıklanmıştır</p>

<div4 id="fixed-table-layout">
<head>Sabit tablo yerleştirme algoritması</head>

<p>Bu (hızlı) algoritmada tablonun yataydaki yerleşimi gözelerin içeriğine bağımlı değildir; sadece tablonun genişliğine, sütunların ve kenar çizgilerinin veya gözeler arası boşlukların genişliğine bağlıdır.</p>

<p>Tablo genişliği doğrudan <property>width</property> niteliği ile belirtilebilir. <literal>auto</literal> değeri (hem '<code>display: table</code>' hemde '<code>display: inline-table</code>' durumunda) <termref def="auto-table-layout">Özdevinimli tablo yerleştirme algoritması</termref> kullanılacağı anlamına gelir.</p>

<p>Sabit tablo yerleştirme algoritmasında her sütunun genişliği şöyle saptanır:</p>

<olist>
<item><p><property>width</property> niteliğinin <literal>auto</literal>'dan farklı değerleri bir sütun elemanı için sütun genişliğini belirtir.</p></item>

<item><p>Aksi takdirde, ilk sıradaki gözenin <property>width</property> niteliğinin <literal>auto</literal>'dan farklı değerleri sütun genişliğini belirtir. Eğer bir göze birden fazla sütuna yayılıyorsa genişlik sütun sayısına bölünür.</p></item>

<item><p>Kalan tablo genişliği (kenar dış boşlukları ve gözeler arası boşluklar düşüldükten sonra) kalan sütun sayısına bölünür.</p></item>
</olist>

<p>Bu durumda tablo genişliğini şu iki değerden büyük olanı belirler: (1) Tablo için belirtilen <property>width</property> niteliğinin değeri. (2) (Hesaplanan)
Sütun genişliklerinin (gözeler arası boşluklar ve kenar çizgilerinin genişlikleri eklenerek) toplamı. Eğer birincisi geçerliyse, arta kalan boşluk (tablonun belirtilen genişliği ile hesaplanan sütun genişliklerinin toplamı
arasındaki fark) sütunlara paylaştırılır.</p>

<p>Bu manada, kullanıcı arayüzü ilk sıranın tamamı alındıktan sonra tabloyu yerleştirmeye başlayabilir. Sonraki sıralardaki gözeler sütun genişliklerinde etkili olmaz. İçeriği taşan gözelerin taşan içeriğinin kırpılıp kırpılmayacağına karar vermek için <property>overflow</property> niteliği kullanılır.</p>
</div4>

<div4 id="auto-table-layout">
  <head>Özdevinimli tablo yerleştirme algoritması</head>

<p>Bu (genellikle bir geçişten fazlasını gerektiren) algoritmada, tablonun genişliği sütunlarının genişlikleri (ve arada kalan <specref ref="borders"/>) tarafından belirlenir. Bu algoritma bu belirtimin yazımı sırasında kullanılan tanınmış HTML kullanıcı arayüzlerinin davranışlarını yansıtır. Kullanıcı arayüzleri, <property>table-layout</property> niteliğinin değerinin <literal>auto</literal> olduğu durumda tablo yerleşimini belirlemek için bu algoritmayı gerçeklemeleri gerekli değildir; herhangi bir algoritmayı kullanabilirler.</p>

<p>Kullanıcı arayüzünün son yerleşimi belirlemek için tablonun tüm içeriğine erişmesi gerektiğinden ve işlemin bir kaç genişlik hesaplama turu gerektirebilmesi nedeniyle bu algoritma verimsiz olabilir.</p>

<p>Sütun genişlikleri şöyle belirlenir:</p>

<olist>
<item><p>Her gözenin asgari içerik genişliği (AİG) hesaplanır: biçimlenen içerik bir kaç sıraya yayılabilir fakat göze çerçevesinden taşmayabilir. Eğer <property>width</property> ile belirtilen genişlik (G), AİG'den büyükse G gözenin asgari genişliği olur. <literal>auto</literal> değeri AİG'nin asgari göze genişliği olacağı anlamına gelir.</p>

<p>Ek olarak, her gözenin "azami" göze genişliği hesaplanır: satırsonlarının açıkça belirtildiği satırlar hariç içerik satırları katlanmadan biçimlenir.</p></item>

<item><p>Her sütun için, başka bir sütuna yayılmayan gözelerden asgari ve azami sütun genişlikleri saptanır. Asgari genişlik, en geniş asgari göze genişliğe sahip gözenin gerektirdiği genişliktir (veya sütunun <property>width</property> değeri; hangisi daha büyükse). Azami genişlik ise, en geniş azami göze genişliğe sahip gözenin gerektirdiği genişliktir (veya sütunun <property>width</property> değeri; hangisi daha büyükse).</p></item>

<item><p>Bir sütundan fazlasına yayılan her göze için, sütunların asgari genişlikleri en azından gözenin genişliğine kadar arttırılır. Azami genişliklerle aynı yapılır. Mümkünse, bu sütunların genişliklikleri hemen hemen aynı yapılır.</p></item>
</olist>

<p>Bu yöntem her sütun için bir asgari bir de azami genişliği verir. Sütun genişlikleri tablonun son genişliğini şöyle etkiler:</p>

<olist>
<item><p>Eğer <literal>table</literal> veya <literal>inline-table</literal> bileşenli elemanın <property>width</property> niteliği için <literal>auto</literal>'dan farklı bir değer (G) belirtilmişse niteliğin hesaplanmış değeri G'den ve tüm sütunlar için gereken asgari genişlik ile gözeler arası boşluk veya kenar çizgisi genişliklerinden daha büyük olur (ASG). G, ASG'den büyükse genişliğin fazlası sütunlara dağıtılmalıdır.</p></item>

<item><p>Eğer <literal>table</literal> veya <literal>inline-table</literal> bileşenli eleman için '<code>width: auto</code>' belirtilmişse hesaplanan tablo genişliği tablonun taşıyıcı blok genişliğinden ve ASG'den büyük olur. Bununla birlikte, sütunlar ile gözeler arası boşluklar veya kenar çizgisi genişliklerinin toplamı için gereken genişlik (AZM), taşıyıcı blokun genişliğinden küçükse AZM kullanılır.</p></item>
</olist>

<p>Sütun genişliği için yüzdelik değerler tablo genişliğine görelidir. Eğer tablo için '<code>width: auto</code>' belirtilmişse yüzdelik değer sütunun genişliği üzerinde kullanıcı arayüzünün uymaya çalışması gereken bir kısıtlama belirtir. (Açıkçası, bu her zaman mümkün olmaz: eğer sütunun genişliği için %110 belirtilmişse kısıtlamaya uyulamayacaktır.)</p>

<note><p>Bu algoritmada, sıralar (ve sıra grupları) ve sütunların (ve sütun grupları) her ikisi de hem gözelerin genişliklerini kısıtlarlar hem de gözelerin genişlikleriyle kısıtlanırlar. Sütunların genişlikleri ile sıraların yükseklikleri, hangisi için değer belirtilmişse bir diğerini dolaylı olarak etkiler.</p></note>
</div4>
</div3>

<div3 id="height-layout">
<head>Tablo yükseklik algoritmaları</head>

<p>Bir tablonun yüksekliği <literal>table</literal> veya <literal>inline-table</literal> bileşenli elemanın <property>height</property> niteliği ile belirtilir. Niteliğe belirtilen bir <literal>auto</literal> değerinin anlamı, tablo yüksekliğinin sıra yükseklikleri ile gözeler arası boşluklar veya kenar çizgisi genişliklerinin toplamına eşit olacağı anlamına gelir. Yükseklik için bundan farklı bir değer açıkça belirtilir; Tablo, bu bakımdan kendi sıralarının boyundan daha uzun veya daha kısa olabilir. Tablo yüksekliğinin içerik yüksekliğinden farklı olduğu durumda BB2 tablonun nasıl oluşturulacağını belirtmez; özellikle de içerik yüksekliğinin belirtilen yüksekliği geçersiz kılıp kılmayacağını; geçersiz kılmayacaksa belirtilen tablo yüksekliğine erişmek için sıraların yüksekliğine eklenecek fazlalığın nasıl dağıtılacağını veya içerik yüksekliğinin belirtilen yüksekliği aştığı durumda kullanıcı arayüzünün bir kaydırma mekanizması sağlaması gerekip gerekmediğini belirtmez. BB'nin gelecekteki aşamalarında böyle şeyler belirtilebilir.</p>

<p><literal>table-row</literal> bileşenine sahip bir elemanın çerçeve yüksekliği, kullanıcı arayüzü sıradaki tüm gözeleri aldıktan sonra hesaplanır: çerçeve yüksekliği, sıranın <property>height</property> ile belirtilmiş değerinin azamisi ve gözeler tarafından gereksinim duyulan yüksekliğin asgarisidir (ASG). <literal>table-row</literal> bileşenine sahip bir elemanın <property>height</property> niteliği için <literal>auto</literal> değeri, hesaplanan sıra yüksekliğinin ASG olacağı anlamına gelir. ASG, göze çerçevesinin yüksekliğine ve hizalamasına (daha çok bir <termref def="line-height">satır çerçevesi</termref>nin yükseklik hesabına) bağlıdır. Tablo sıraları veya sıra grupları için belirtildiği takdirde, <property>height</property> niteliğinin yüzdelik değerlerinin neyi ölçüt alacaklarını BB2 belirtmez.</p>

<p>BB2'de bir göze çerçevesinin yüksekliği tablo gözesinin <property>height</property> değerinin azamisi ve içerik tarafından gereksinim duyulan yüksekliğin asgarisidir (ASG). <property>height</property> niteliği için <literal>auto</literal> değeri hesaplanmış bir ASG değeri anlamına gelir. BB2, tablo gözelerinde belirtildiğinde <property>height</property> niteliğinin yüzdelik değeri için neyin ölçüt alınacağını belirtmez.</p>

<p>BB2 sıra yüksekliği hesabında etkili olan, gözelerin birden fazla sıraya nasıl yayılacağını belirtmez, sadece bu sıraların yükseklikleri toplamının gözenin yayıldığı sıraları kuşatacak büyüklükte olmasını gerektirir.</p>

<p>Her tablo gözesinin <property>vertical-align</property> niteliği, sıranın içindeki hizalamayı belirler. Her göze içeriğinin, tıpkı sıranın kendisi gibi  bir taban çizgisi, bir üstü, ortası ve altı vardır. Tablo bağlamında <property>vertical-align</property> değerleri ve anlamları şöyledir:</p>

<varlist><gitem>
<label><code>baseline</code></label>
<def><p>Gözenin taban çizgisi, yayıldığı sıraların ilkinin taban çizgisi ile aynı yüksekliktedir (sıra ve gözelerin taban çizgilerinin tanımı için aşağıya bakınız).</p></def>
</gitem><gitem>
<label><code>top</code></label>
<def><p>Göze çerçevesinin tepesi yayıldığı ilk sıranın tepesine hizalanır.</p></def>
</gitem><gitem>
<label><code>bottom</code></label>
<def><p>Göze çerçevesinin altı yayıldığı son sıranın altına hizalanır.</p></def>
</gitem><gitem>
<label><code>middle</code></label>
<def><p>Göze çerçevesinin ortası yayıldığı sıralara göre ortaya hizalanır.</p></def>
</gitem><gitem>
<label><code>sub, super, text-top, text-bottom</code></label>
<def><p>Gözelere bu değerler uygulanmaz; bu değerler belirtildiğinde göze taban çizgisine göre hizalanır.</p></def>
</gitem></varlist>

<p>Gözenin taban çizgisi gözedeki ilk <termref def="line-box">satır çerçevesi</termref>nin taban çizgisidir. Bir metin yoksa taban çizgisi gözede her ne gösteriliyorsa onun taban çizgisidir, göze tamamen boşsa göze çerçevesinin altıdır. Göze çerçevesinin tepesi ile '<code>vertical-align: baseline</code>' belirtilmiş tüm gözelerin taban çizgisi arasındaki azami uzaklık sıranın taban çizgisini belirtmekte kullanılır.</p>

<figure id="img-cell-align">
<graphic source="images/cell-align.png" alt="Gözelerin düşeyde hizalanması örneği" />
[<loc href="images/longdesc/cell-align-desc.html" title="Tablo sırası yüksekliğinin hesabı ve gözelerin düşeyde hizalanmasını gösteren örneğin geniş açıklaması">Açıklama</loc>]
<caption><code>vertical-align</code> niteliğinin çeşitli değerlerinin tablo gözeleri üzerindeki etkileri.</caption>
</figure>

<p>1. ve 2. göze çerçeveleri taban çizgilerinden hizalanırlar. 2. göze çerçevesi taban çizgisinin üstünde en geniş yüksekliğe sahiptir, dolayısıyla sıranın taban çizgisini belirler. Eğer sıranın taban çizgisine hizalı bir göze çerçevesi olmasaydı, sıranın bir taban çizgisi (ihtiyacı) olmazdı.</p>

<p>Belirsiz durumlardan kaçınmak için gözelerin hizalanmasında şu sıraya göre işlem yapılır:</p>

<olist>
<item><p>Önce taban çizgilerine göre hizalanan gözeler konumlanır. Bu işlemle sıranın taban çizgisi oluşturulmuş olur. Ardından '<code>vertical-align: top</code>' belirtilmiş gözeler konumlanır.</p></item>

<item><p>Sıranın artık bir tepesi, muhtemelen bir taban çizgisi ve geçici olarak bir yüksekliği (en tepeden en alta kadar gözelerin konumlandığı mesafe) vardır. (Aşağıda, göze kenar iç boşluklarıyla ilgili koşullara bakınız.)</p></item>

<item><p>Başka göze kalmışsa alta veya ortaya hizalananlardan yüksekliği sıranın o anki yüksekliğinden fazla olanlar için sıranın yüksekliği alt kenara doğru uzatılarak bu gözelerin en yükseğine kadar arttırılır.</p></item>

<item><p>Son olarak kalan gözeler konumlanır.</p></item>
</olist>

<p>Yüksekliği sıranınkinden kısa olan göze çerçeveleri fazladan üst ve alt kenar iç boşlukları alırlar.</p>
</div3>

<div3 id="column-alignment">
<head>Bir sütunun yatayda hizalanması</head>

<p>Bir göze çerçevesinin içeriğinin yatayda hizalanması için <property>text-align</property> niteliği kullanılır.</p>

<p><indexterm><primary><valueref>dizge</valueref></primary></indexterm>
Bir sütunda birden fazla gözenin <property>text-align</property> niteliği için bir <valueref>dizge</valueref> değeri belirtildiğinde bu gözelerin içerikleri bir düşey eksen boyunca hizalanırlar. Dizgenin başlangıcı bu eksene dokunur. Dizgenin eksenin sağına mı yoksa soluna mı dokunacağı yazım yönüne göre saptanır.</p>

<p>Metnin bu yolla hizalanması sadece metin tek satırlıksa yararlıdır. Metnin bir satırdan fazlasına yayıldığı durumda sonuç tanımsızdır.</p>

<p>Bir tablo gözesinin <property>text-align</property> niteliğinin değeri bir dizgeyse fakat dizge göze içeriğinde bulunmuyorsa düşey hizalama eksenine göze içeriğinin sonu dokunur.</p>

<p>Dizgelerin her göze için aynı olması tercih edilmeli ise de böyle olması şart değildir.</p>

<p>BB, düşey hizalama ekseninin bir sütun çerçevesine göre konumunu belirtmek için bir yöntem sağlamaz.</p>

<example>
<p>Biçembent şöyle olsun:</p>

<eg>TD { text-align: "." }
TD:before { content: "$" }</eg>

<p>Bu da HTML tablomuz olsun:</p>

<eg><![CDATA[<TABLE>
  <COL width="40">
  <TR> <TH>Milletlerarası görüşmeler
  <TR> <TD> 1.30
  <TR> <TD> 2.50
  <TR> <TD> 10.80
  <TR> <TD> 111.01
  <TR> <TD> 85.
  <TR> <TD> 90
  <TR> <TD> .05
  <TR> <TD> .06
</TABLE>]]></eg>

<p><indexterm><primary><selector>:before</selector></primary></indexterm>
Burada dolar işaretli sütun nokta işaretine göre hizalanacaktır. Hoş olsun diye, her göze içeriğinin başına <selector>:before</selector> sözde elemanı kullanılarak birer dolar işareti eklenmiştir. Elde edilen tablo şöyle olurdu:</p>

<eg>
Milletlerarası
    görüşmeler
         $1.30
         $2.50
        $10.80
       $111.01
        $85.
        $90
          $.05
          $.06</eg>
</example>
</div3>

<div3 id="dynamic-effects">
<head>Özdevimli sıra ve sütun görünüşleri</head>

<p><property>visibility</property> niteliği sıra, sıra grubu, sütun ve sütun grubu elemanları için <literal>collapse</literal> değerini alır. Bu değer sıra veya sütunun ekrandan silinmesine sebep olur ve ortaya çıkan boşluğa diğer içerik için kullanılmak üzere sıra ve sütunlar tarafından el konur. Sıra ve sütunların bastırılması yine de, tablo yerleşimini başka türlü etkilemez. Sütun koşullarındaki olası değişiklikleri hesaba katarken tablonun yeniden yerleştirilmesine gerek kalmadan tablo sıralarının ve sütunların böyle kaldırılması özdevimli etkilere sebep olur.</p>
</div3>
</div2>

<div2 id="borders">
<head>Kenar çizgileri</head>

<p><indexterm><primary>ayrık kenar çizgileri</primary></indexterm>
BB'de tablo gözelerine kenar çizgileri atamanın iki ayrı yolu vardır. İlki, ayrık kenar çizgileri adı verilen, tek tek gözelerin etrafına çizilmeye uygun olanıdır. Diğeri ise tabloyu boydan boya kateden sürekli kenar çizgileri için uygundur. Çoğu kenar çizgisi biçemi her modelde başarılı olursa da kullanım çoğunlukla kullanıcının zevkine bağlıdırlar.</p>

<indexterm><primary><property>border-collapse</property></primary></indexterm>
<indexterm><primary>nitelikler</primary> <secondary><property>border-collapse</property></secondary></indexterm>
<propinfo>
  <propname>border-collapse</propname>
  <value><literal>collapse</literal> | <literal>separate</literal> | <literal>inherit</literal></value>
  <initial><literal>collapse</literal></initial>
  <applies-to><literal>table</literal> ve <literal>inline-table</literal> bileşenli elemanlar</applies-to>
  <inherited>evet</inherited>
  <percentages/>
  <media><termref def="visual-media-group">görsel</termref></media>
</propinfo>

<p>Bu nitelik bir tablonun kenar çizgileri modelini seçmek için kullanılır. <literal>separate</literal> değeri ayrık kenar çizgileri modelini, <literal>collapse</literal> değeri ise örtüşen kenar çizgileri modelini seçmek için kullanılır. Modeller aşağıda açıklanmıştır.</p>

<div3 id="separated-borders">
<head>Ayrık kenar çizgileri modeli</head>

<indexterm><primary><property>border-spacing</property></primary></indexterm>
<indexterm><primary>nitelikler</primary> <secondary><property>border-spacing</property></secondary></indexterm>
<propinfo>
  <propname>border-spacing</propname>
  <value><valueref>uzunluk</valueref> <valueref>uzunluk</valueref>? | <literal>inherit</literal></value>
  <initial>0</initial>
  <applies-to><literal>table</literal> ve <literal>inline-table</literal> bileşenli elemanlar</applies-to>
  <inherited>evet</inherited>
  <percentages/>
  <media><termref def="visual-media-group">görsel</termref></media>
</propinfo>

<p>Uzunluklar komşu gözelerin kenar çizgilerini ayıran boşluğu belirler. Eğer sadece bir uzunluk belirtilmişse hem yatay hem de düşey boşluklar için bu uzunluk kullanılır. İki uzunluk belirtilmişse ilki yataydaki boşluğu ikincisi düşeydeki boşluğu belirler. Uzunluklar negatif olabilir.</p>

<p><indexterm><primary>ignore</primary></indexterm>
Bu modelde her göze bağımsız olarak kendi kenar çizgilerine sahiptir. <property>border-spacing</property> niteliği komşu gözelerin kenar çizgileri arasındaki uzaklığı belirtir. Bu boşluk tablo elemanının artalanı ile doldurulur. Sıralar, sütunlar sıra ve sütun grupları kenar çizgilerine sahip olamazlar (yani kullanıcı arayüzlerinin bu elemanlar için belirtilen kenar çizgisi niteliklerini <termref def="ignore">yoksaymaları</termref> gerekir).</p>

<example>
<p>Aşağıdaki şekildeki tablo böyle bir biçembendin sonucu olabilirdi:</p>

<eg>TABLE      { border: outset 10pt;
              border-collapse: separate;
              border-spacing: 15pt }
TD         { border: inset 5pt }
TD.special { border: inset 10pt }  /* Sol üst göze */</eg>

<figure id="img-tbl-spacing">
<!-- In the image, change "cell-spacing" to "border-spacing". -->
<graphic source="images/tbl-spacing.png" alt="Kenar çizgileri arası boşluklu bir tablo" />
[<loc href="images/longdesc/tbl-spacing-desc.html" title="Ayrık kenar çizgileri modeli örneğinin geniş açıklaması">Açıklama</loc>]
<caption><property>border-spacing</property> niteliğine bir uzunluk değeri atanmış bir tablo. Tablonun kendisi ve her göze bağımsız olarak kendi kenar çizgilerine sahiptirler.</caption>
</figure>
</example>


<div4 id="empty-cells">
<head>Boş gözelerin kenar çizgileri: <property>empty-cells</property> niteliği</head>

<indexterm><primary><property>empty-cells</property></primary></indexterm>
<indexterm><primary>nitelikler</primary> <secondary><property>empty-cells</property></secondary></indexterm>
<propinfo>
  <propname>empty-cells</propname>
  <value><literal>show</literal> | <literal>hide</literal> | <literal>inherit</literal></value>
  <initial><literal>show</literal></initial>
  <applies-to><literal>table-cell</literal> bileşenli elemanlar</applies-to>
  <inherited>evet</inherited>
  <percentages/>
  <media><termref def="visual-media-group">görsel</termref></media>
</propinfo>

<p>Ayrık kenar çizgileri modelinde bu nitelik, görünür bir içeriği olmayan gözelerin kenar çizgilerini denetler. Boş gözeler ve <property>visibility</property> niteliğinin değeri <literal>hide</literal> olan gözeler görünür bir içeriğe sahip olmayan gözeler olarak ele alınırlar. Görünür bir içerik, satırsonu ("\0A"), satırbaşı ("\0D"), sekme ("\09") ve boşluk ("\20") hariç diğer boşluk karakterlerini ("&amp;nbsp;" gibi) içerir.</p>

<p>Bu niteliğin değeri <literal>show</literal> olduğu takdirde boş gözelerin etrafına tıpkı normal gözelerdeki gibi kenar çizgileri çizilir.</p>

<p><literal>hide</literal> değeri ise boş gözelerin kenar çizgilerinin olmayacağı anlamına gelir. Dahası, bir sıradaki gözelerin hepsi için <literal>hide</literal> değeri belirtilmişse ve görünür bir içeriğe sahip değilseler sıranın tamamı için '<code>display: none</code>' belirtilmiş gibi işlem yapılır.</p>

<p><property>empty-cells</property> niteliği sadece kenar çizgilerini denetlemekle kalmaz, artalanı da denetler.</p>

<example>
<p>Aşağıdaki kural tüm gözelere kenar çizgisi çizilmesine sebep olur:</p>

<eg>TABLE { empty-cells: show }</eg>
</example>
</div4>
</div3>

<div3 id="collapsing-borders">
<head>Örtüşen kenar çizgileri modeli</head>

<p>Örtüşen kenar çizgileri modelinde bir göze, sıra, sıra grubu, sütun ve sütun grubunu tamamen veya kısmen kuşatan kenar çizgileri belirtmek mümkündür. HTML'nin <code>rule</code> özniteliğinde kenar çizgileri bu yolla belirtilebilir.</p>

<p>Kenar çizgileri gözeler arasındaki çizelge hatlarına ortalanır. Kullanıcı arayüzleri, tek sayılı uzunluklarla hesap yaparken tutarlı bir yuvarlama yöntemi bulmak zorundadırlar.</p>

<p>Aşağıdaki şekilde tablonun genişliği ile kenar çizgileri, kenar iç boşlukları ve göze genişliklerinin nasıl etkileştikleri gösterilmiştir. Tablonun her sırası için bu ilişkiler şu bağıntı ile ifade edilir:</p>

<p><var>SG</var> = (0.5 * <var>ÇG</var><sub>0</sub>) + <var>SolKİB</var><sub>1</sub> + <var>GG</var><sub>1</sub> + <var>SağKİB</var><sub>1</sub> + <var>ÇG</var><sub>1</sub> + <var>SolKİB</var><sub>2</sub> +...+ <var>SağKİB</var><sub><var>n</var></sub> + (0.5 * <var>ÇG</var><sub><var>n</var></sub>)</p>

<p>Burada,<br/>
Sıra genişliği: <var>SG</var><br/>
Göze genişliği: <var>GG</var><br/>
Kenar çizgisi genişliği: <var>ÇG</var><br/>
Sol kenar iç boşluğu: <var>SolKİB</var><br/>
Sağ kenar iç boşluğu: <var>SağKİB</var><br/>
olup ayrıca, <var>n</var> ile sıradaki göze sayısı, <var>SG</var><sub><var>i</var></sub> ile <var>i</var>'nci ve <var>i</var> + 1'inci göze arasındaki kenar çizgisi ifade edilmiştir.</p>

<p>Sadece en dıştaki iki çerçeve çizgisinin yarılarının tablo genişliğine dahil olduğuna ve diğer yarılarının kenar dış boşluk alanı içinde kaldığına dikkat ediniz.</p>

<figure id="img-tbl-width">
<graphic source="images/tbl-width.png" alt="Gözelerin genişliklerinin, kenar çizgilerinin ve iç boşluklarının gösterildiği şekil" />
[<loc href="images/longdesc/tbl-width-desc.html" title="Örtüşen kenar çizgileri modeli örneğinin geniş açıklaması">Açıklama</loc>]
<caption>Gözelerin genişliklerini, kenar çizgilerini ve iç boşluklarını gösteren şekil.</caption>
</figure>

<p>Bu modelde tablo genişliğinin yarım tablo kenar çizgisi genişliği içerdiğine dikkat ediniz. Ayrıca bu modelde, bir tablonun kenar iç boşlukları yoktur (ama kenar dış boşlukları vardır).</p>

<div4 id="border-conflict-resolution">
<head>Kenar çizgisi çakışmalanının çözümlenmesi</head>

<p>Örtüşen kenar çizgileri modelinde gözelerin her kenarının kenar çizgileri, kenarları olan elemanlar (gözeler, sıralar, sıra grupları, sütunlar, sütun grupları ve tablonun kendisi) üzerinden kenar çizgileri nitelikleri ile belirtilebilir ve bu kenar çizgilerinin genişlikleri, biçemleri ve renkleri farklı farklı olabilir. Her kenarda hangi renk, biçem ve genişliğin etkin olacağıyla ilgili ana kural, biçem için <literal>hidden</literal> belirtilerek kenar çizgisi gizlenmedikçe, göz dolduran biçemin tercih edilmesi şeklindedir.</p>

<p>Çakışma durumunda hangi kenar çizgisi biçeminin "kazanacağına" şu kurallarla karar verilir:</p>

<olist>
<item><p><literal>hidden</literal> değerli <property>border-style</property> niteliğine sahip kenar çizgileri, kendisiyle çakışan diğer tüm kenar çizgilerine üstün gelir. Böyle kenar çizgileri aynı konumdaki bütün kenar çizgilerini bastırır.</p></item>

<item><p><literal>none</literal> değerli biçem en düşük önceliği sağlar. Sadece, aynı kenara sahip tüm elemanların kenar çizgisi nitelikleri <literal>none</literal> olduğu takdirde, kenar çizgisi atlanır (ancak, kenar çizgisi için öntanımlı biçeminin <literal>none</literal> olduğunu unutmayın).</p></item>

<item><p>Eğer biçemlerin hiçbiri <literal>hidden</literal> değilse ve en azından biri bile <literal>none</literal> değilse geniş olanlar yararına, dar kenar çizgileri iptal edilir. Aynı <property>border-width</property> değerine sahip olanlar arasında şu sıra tercih edilir: <literal>double</literal>, <literal>solid</literal>, <literal>dashed</literal>, <literal>dotted</literal>,
<literal>ridge</literal>, <literal>outset</literal>, <literal>groove</literal>, ve en düşük önceliklisi: <literal>inset</literal>.</p></item>

<item><p>Kenar çizgilerinin sadece renkleri farklıysa göze sıraya; sıra, sıra grubuna; sıra grubu sütuna; sütun, sütun grubuna ve sütun grubu da tabloya üstün gelir.</p></item>
</olist>

<example>
<p>Bu öncelik kurallarının uygulanışını bir örnekle görelim. Biçembent şöyle olsun:</p>

<eg>TABLE          { border-collapse: collapse;
                  border: 5px solid yellow; }
*#col1         { border: 3px solid black; }
TD             { border: 1px solid red; padding: 1em; }
TD.solid-blue  { border: 5px dashed blue; }
TD.solid-green { border: 5px solid green; }</eg>

<p>HTML belgesi şunları içersin:</p>

<eg><![CDATA[<p>
<TABLE>
<COL id="col1"><COL id="col2"><COL id="col3">
<TR id="row1">
    <TD> 1
    <TD> 2
    <TD> 3
</TR>
<TR id="row2">
    <TD> 4
    <TD class="solid-blue"> 5
    <TD class="solid-green"> 6
</TR>
<TR id="row3">
    <TD> 7
    <TD> 8
    <TD> 9
</TR>
<TR id="row4">
    <TD> 10
    <TD> 11
    <TD> 12
</TR>
<TR id="row5">
    <TD> 13
    <TD> 14
    <TD> 15
</TR>
</TABLE>]]></eg>

<p>Sonuç şöyle olabilirdi:</p>

<figure id="img-tbl-border-conflict">
<graphic source="images/tbl-border-conflict.gif" alt= "Kenar çizgileri örtüşen tablo örneği" />
[<loc href="images/longdesc/tbl-border-conflict-desc.html" title="Örtüşen kenar çizgileri modelinde öncelikler örneğinin geniş açıklaması">Açıklama</loc>]
<caption>Kenar çizgileri örtüşen tablo örneği</caption>
</figure>
</example>

<example>
<p>Bu örnekte, sıralarının arasına yatay çizgiler çekilmiş bir tablo görülmektedir. Tablonun üst kenar çizgisini bastırmak için ilk sıranın üst kenarına <literal>hidden</literal> değeri atanmıştır. Bu, HTML 4.0'ın <code>rules</code> özniteliği ile gerçeklenmiştir (<code>rules="rows"</code>).</p>

<eg>TABLE[rules=rows] TR { border-top: solid }
TABLE[rules=rows]    { border-collapse: collapse;
                       border-top: hidden }</eg>

<figure id="img-tbl-rules">
<graphic source="images/tbl-rules.gif" alt="Yatay çizgili tablo" />
[<loc href="images/longdesc/tbl-rules-desc.html" title="Sıraların kenar çizgileri ile ayrılmasını gösteren örneğin geniş açıklaması">Açıklama</loc>]
<caption>Sıralarının arasına yatay çizgiler çekilmiş bir tablo</caption>
</figure>

<p>Aynı etki <htmltag>table</htmltag> elemanının üst kenarına <literal>hidden</literal> atamadan ilk sütunu ayrı olarak ele almakla da elde edilebilirdi. Hangi yöntemin tercih edileceği tamamen zevk (daha ziyade tarayıcıyı gerçekleyenin) meselesidir.</p>

<eg>TR:first-child { border-top: none }
TR { border-top: solid }</eg>
</example>

<example>
<p>Başka bir örtüşen kenar çizgilerinin gizlenmesi örneği:</p>

<figure id="img-CSStbl3">
<graphic source="images/CSStbl3.gif" alt="İç kenar çizgilerinden ikisi eksik bir tablo" />
[<loc href="images/longdesc/CSStbl3-desc.html" title="Bir tablonun iç kenar çizgilerinin gizlendiği örneğin geniş açıklaması">Açıklama</loc>]
<caption>İç kenar çizgilerinden ikisi eksik bir tablo</caption>
</figure>

<p>HTML kodu:</p>

<eg><![CDATA[<TABLE style="border-collapse: collapse; border: solid;">
<TR><TD style="border-right: hidden; border-bottom: hidden">foo</TD>
    <TD style="border: solid">bar</TD></TR>
<TR><TD style="border: none">foo</TD>
    <TD style="border: solid">bar</TD></TR>
</TABLE>]]></eg>
</example>
</div4>
</div3>

<div3 id="tables63"><head>Kenar çizgisi biçemleri</head>

<p><indexterm><primary><valueref>border-style</valueref></primary></indexterm>
<valueref>border-style</valueref> niteliğinin bazı değerleri tablolarda, diğer elemanlardakinden farklı anlamlara sahiptir. Anlamları değişen değerler aşağıdaki listede yıldız imi ile işaretlenmiştir.</p>

<varlist>
<gitem>
<label><indexterm><primary><code>none</code></primary> <secondary>kenar çizgisi biçemi olarak</secondary></indexterm>
<termref def="value-def-bo-none"><code>none</code></termref></label>
<def><p>Kenar çizgisi yoktur.</p></def>
</gitem>
<gitem>
<label><indexterm><primary><literal>hidden</literal></primary></indexterm>
<code>*</code><literal>hidden</literal></label>
<def><p><termref def="value-def-bo-none"><code>none</code></termref> gibidir, ancak <titleref ref="collapsing-borders">örtüşen kenar çizgileri modeli</titleref>nde ayrıca aynı yerdeki diğer kenar çizgilerini de bastırır (<specref ref="border-conflict-resolution"/> bölümüne bakınız).</p></def>
</gitem>
<gitem>
<label><indexterm><primary><literal>dotted</literal></primary></indexterm>
<literal>dotted</literal></label>
<def><p>Kenar çizgisi nokta dizisinden oluşur.</p></def>
</gitem>
<gitem>
<label><indexterm><primary><literal>dashed</literal></primary></indexterm>
<literal>dashed</literal></label>
<def><p>Kenar çizgisi, çizgi parçaları dizisinden oluşur.</p></def>
</gitem>
<gitem>
<label><indexterm><primary><literal>solid</literal></primary></indexterm>
<literal>solid</literal></label>
<def><p>Kenar çizgisi tek parçadan oluşan bir çizgidir.</p></def>
</gitem>
<gitem>
<label><indexterm><primary><literal>double</literal></primary></indexterm>
<literal>double</literal></label>
<def><p>Kenar çizgisi, her biri tek parçadan oluşan iki paralel çizgiden oluşur.
Bu iki çizginin kalınlıkları ile aralarındaki boşluğun genişliğinin toplamı <property>border-width</property> niteliğinin değerine eşittir.</p></def>
</gitem>
<gitem>
<label><indexterm><primary><literal>groove</literal></primary></indexterm>
<literal>groove</literal></label>
<def><p>Kenar çizgisi tuvale oyulmuş gibi görünür.</p></def>
</gitem>
<gitem>
<label><indexterm><primary><literal>ridge</literal></primary></indexterm>
<literal>ridge</literal></label>
<def><p>groove'un zıddı: Kenar çizgisi kabartma gibi görünür.</p></def>
</gitem>
<gitem>
<label><indexterm><primary><literal>inset</literal></primary></indexterm>
<code>*</code><literal>inset</literal></label>
<def><p><titleref ref="separated-borders">Ayrık kenar çizgileri modeli</titleref>nde, kenar çizgisi çerçevenin tamamının tuvale gömülü gibi görünmesine sebep olur. <titleref ref="collapsing-borders">Örtüşen kenar çizgileri modeli</titleref>nde <literal>groove</literal> gibidir.</p></def>
</gitem>
<gitem>
<label><indexterm><primary><literal>outset</literal></primary></indexterm>
<code>*</code><literal>outset</literal></label>
<def><p><titleref ref="separated-borders">Ayrık kenar çizgileri modeli</titleref>nde, kenar çizgisi çerçevenin tamamının kabartma gibi görünmesine sebep olur. <titleref ref="collapsing-borders">Örtüşen kenar çizgileri modeli</titleref>nde <literal>ridge</literal> gibidir.</p></def>
</gitem></varlist>
</div3>
</div2>

<div2 id="tables7">
<head>Tabloların işitsel olarak oluşturulması</head>

<p>Bir tablo bir konuşma bireştirici tarafından seslendirildiğinde, veri gözeleri ile başlık gözeleri arasındaki ilişki yatay ve düşey hizalamadan farklı bir yolla ifade edilmelidir. Bazı konuşma bireştiricili tarayıcılar uzamsal olarak sunulan ilişkileri eşleştirmeleri için elverişli ortamı sağlamak suretiyle kullanıcının iki boyutlu uzayda hareketini mümkün kılarlar. Bu mümkün olmadığı zaman başlıkların ne zaman söyleneceğini biçembentin belirtmesi gerekir.</p>

<div3 id="speak-headers">
<head>Başlıkların söylenmesi: <property>speak-header</property> niteliği</head>

<indexterm><primary><property>speak-header</property></primary></indexterm>
<indexterm><primary>nitelikler</primary> <secondary><property>speak-header</property></secondary></indexterm>
<propinfo>
  <propname>speak-header</propname>
  <value><literal>once</literal> | <literal>always</literal> | <literal>inherit</literal></value>
  <initial><literal>once</literal></initial>
  <applies-to>tablo başlık bilgisine sahip elemanlar</applies-to>
  <inherited>evet</inherited>
  <percentages/>
  <media><termref def="aural-media-group">işitsel</termref></media>
</propinfo>

<p>Bu nitelik tablo başlıklarının her gözeden önce mi yoksa sadece öncekinden farklı bir başlığa sahip gözelerden önce mi söyleneceğini belirler. Değerlerin anlamları şöyledir:</p>

<varlist>
<gitem><label><code>once</code></label>
<def><p>Başlık, göze dizisinden önce bir kere söylenir.
</p></def>
</gitem><gitem>
<label><code>always</code></label>
<def><p>Başlık ilgili her gözeden önce söylenir.</p></def>
</gitem></varlist>

<p>Her belge dili, yazarların başlıkları belirtmesi için farklı mekanizmalara sahip olabilir. Örneğin, HTML 4.0'da (<bibref ref="ref-HTML40"/>), başlı bilgisini üç farklı öznitelikle (<code>headers</code>, <code>scope</code> ve <code>axis</code>) belirtmek mümkündür ve belirtim bu öznitelikler kullanılmadığı zaman başlık bilgisini saptamak için bir algoritma verir.</p>

<example id="img-table1">
<figure>
<graphic source="images/table1.png" alt="Bir hesap çizelgesi" />
[<loc href="images/longdesc/table1-desc.html" title="Yolculuk masraf tablosu örneğinin geniş açıklaması">Açıklama</loc>]
<caption>Başlık gözeleri ("Mars" ve "Venüs") veri ile aynı sıra veya sütunda olmayan bir tablo.</caption>
</figure>

<p>Bu HTML örneğinde iki yerde ("Mars" ve "Venüs") geçirilen günlerde yol, yemek ve yatak ücretlerine ödenen paralar listelenmiştir. Kavramsal olarak bir tablonun n-boyutlu bir alan kaplayacağını düşünebilirsiniz. Bu alandaki başlıklar şunlar olurdu: yer, gün, masraf kalemi, ara toplam. Bazı gözeler  günleri ve yerleri gösterirken diğerleri buralarda harcanan paraları göstermektedir. Tablonun HTML belgesi şöle olurdu:</p>

<eg><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.0//EN">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <style type="text/css">
      body    { margin: 2em; font-family: serif; }
      caption { font-family: sans-serif; font-weight: bold;}
      col     { width: 60px }
      table   { border: 2px solid black; border-collapse: collapse; }
      td      { text-align: right; }
      td,th   { padding: 0 10px }
      [headers]  { font-weight: normal;}
      .alttop,
      .kalem     { border-bottom: 1px solid black; }
      .kalem     { text-align: right; }
      .alttop    { background: silver; }
      .toplam    { background: aqua; }
    </style>
  </head>
  <body>
  <table>
    <caption>Yolculuk Masrafları Raporu</caption>
    <col style="border-right: 1px solid black;"/>
    <col /><col /><col />
    <col style="border-left: 1px dotted black;"/>
    <tr class="kalem">
      <th></th>
      <th>Yemek</th>
      <th>Yatak</th>
      <th>Yol</th>
      <th>Toplam</th>
    </tr>
    <tr>
      <th axis="mars">Mars</th><th /><th /><th /><th />
    </tr>
    <tr>
      <th headers="mars">25-Tem-97</th>
      <td>37.74</td>
      <td>112.00</td>
      <td>45.00</td>
      <td></td>
    </tr>
    <tr>
      <th headers="mars">26-Tem-97</th>
      <td>27.28</td>
      <td>112.00</td>
      <td>45.00</td>
      <td></td>
    </tr>
    <tr class="alttop">
      <th headers="mars">ara toplam</th>
      <td>65.02</td>
      <td>224.00</td>
      <td>90.00</td>
      <td>379.02</td>
    </tr>
    <tr>
      <th axis="venüs">Venüs</th><th /><th /><th /><th />
    </tr>
    <tr>
      <th headers="venüs">27-Tem-97</th>
      <td>96.25</td>
      <td>109.00</td>
      <td>36.00</td>
      <td></td>
    </tr>
    <tr>
      <th headers="venüs">28-Tem-97</th>
      <td>35.00</td>
      <td>109.00</td>
      <td>36.00</td>
      <td></td>
    </tr>
    <tr class="alttop">
      <th headers="venüs">ara toplam</th>
      <td>131.25</td>
      <td>218.00</td>
      <td>72.00</td>
      <td>421.25</td>
    </tr>
    <tr class="toplam">
      <th>Toplam</th>
      <td>196.27</td>
      <td>442.00</td>
      <td>162.00</td>
      <td><b>800.27</b></td>
    </tr>
  </table>
 </body>
</html>]]></eg>

<p>Veri modelini bu yolla sağlamak suretiyle yazarlar, konuşma bireştiricili tarayıcıların tabloyu zengin bir söylemle sunmalarını mümkün kılabilirler. Örneğin, her veri gözesinden önce uygun başlık söylenebilir:</p>

<eg>Mars, 25-Tem-97, Yemek:  37.74
Mars, 25-Tem-97, Yatak:  112.00
Mars, 25-Tem-97, Yol:  45.00
 ...</eg>

<p>Başka bir tarayıcı başlıkları sadece değiştiği zaman söyleyebilirdi:</p>

<eg>Mars, 25-Tem-97, Yemek: 37.74
    Yatak: 112.00
    Yol: 45.00
  26-Tem-97, Yemek: 27.28
    Yatak: 112.00
...</eg>
</example>
</div3>
</div2>
</div1>


