XSL Dönüşümleri (XSLT) Sürüm 1.0
ÖncekiYukarıSonraki

3 Veri Modeli

İçindekiler

    3.1 Kök Düğümün Çocukları
    3.2 Temel Tanım-yeri
    3.3 Çözümlenmemiş Öğeler
    3.4 Boşluk Ayıklama
    3.5 XML Sürümü

XSLT tarafından kullanılan veri modeli, bu bölümdeki açıklananlar dışında XPath veri modeli ile aynıdır. XSLT aynı veri modelini kullanan kaynak, hedef ve biçembent belgeleri üzerinde işlem yapar. Aynı ağaca sahip herhangi iki XML belge XSLT'ye göre aynı belgedir.

Biçembentteki işlem yönergeleri ve açıklamalar yoksayılır: biçembent, ağacında ne işlem yönergesi (İng: processing instruction) ne de açıklama varmış gibi ele alınır.

3.1 Kök Düğümün Çocukları

Kök düğümün çocukları üzerindeki normal kısıtlamalar hedef ağaç için esnetilir. Hedef ağacın çocukları bir eleman düğümü için olası herhangi bir sırada olabilir. Özellikle, metin düğümü çocuklara sahip olabileceği gibi istenen sayıda eleman düğümü çocuğa sahip olabilir. xsl:output yöntemi (bkz, Çıktı) XML çıktı için kullanıldığında hedef ağacın iyi biçimlenmiş bir XML belgesi olması gerekmeyebilir; yine de, çıktı daima iyi biçimlenmiş haricen çözümlenebilir bir öğe olacaktır.

Kaynak ağacı iyi biçimlenmiş bir XML belge çözümlenerek oluşturulduğunda, kaynak ağacın kök düğümü, bir metin düğümüne sahip olmamak ve tek bir çocuk elemana sahip olmak gibi normal kısıtlamaları kendiliğinden yerine getirecektir. Kaynak ağacı, DOM kullanımı gibi başka bir yöntemle oluşturulduğunda geçerli kısıtlamalar kaynak ağaç için hedef ağaçtaki kadar esnektir.

3.2 Temel Tanım-yeri

Her düğümün kendisiyle ilişkili tanım-yerine o düğümün temel tanım-yeri denir ve göreli tanım-yerlerini mutlak tanım-yerleri haline getirmek için öznitelik değerlerini çözümlemekte kullanılır. Eğer bir eleman veya işlem yönergesi harici bir öğe içinde yer alıyorsa, bu elemanın veya işlem yönergesinin temel tanım-yeri harici öğenin tanım-yeri olur; aksi takdirde, temel tanım-yeri, belgenin tanım-yeridir. Belge düğümünün temel tanım-yeri belge öğesinin tanım-yeridir. Bir metin, açıklama, öznitelik veya bir isim-alanı düğümümünün temel tanım-yeri ise, ebeveyn düğümün temel tanım-yeridir.

3.3 Çözümlenmemiş Öğeler

Kök düğüm, belgenin DTD'sinde bildirilmiş her çözümlenmemiş öğe için tanım-yeri veren bir eşleme sahiptir. Tanım-yeri, öğe bildiriminde belirtilen sistem betimleyici ve genel betimleyiciden üretilir. XSLT işlemci, tanım-yerini üretmek için sistem betimleyicide belirtilen tanım-yerini bırakıp genel betimleyiciyi kullanabilir. Eğer XSLT işlemci tanım-yerini üretmek için genel betimleyiciyi kullanmıyorsa, sistem betimleyiciyi kullanmalıdır; eğer sistem betimleyici bir göreli tanım-yeri ise, temel tanım-yeri [RFC2396] olarak öğe bildirimini içeren kaynağın tanım-yerini kullanarak onu bir mutlak tanım-yeri olarak çözümlemelidir.

3.4 Boşluk Ayıklama

Kaynak belge veya biçembent belgesi için ağaç oluşturulup, XSLT tarafından bir şekilde işleme sokulmadan önce bazı metin düğümleri ayıklanabilir. Bir metin düğümü salt boşluk karakterlerini içeriyor olmadıkça asla ayıklanamaz. Metin düğümünün ayıklanması metin düğümünü ağaçtan siler. Ayıklama işleminde boşlukları korunması gereken elemanların isimlerinden oluşan bir küme girdi olarak alınır. Ayıklama işlemi biçembentlerin ve kaynak belgelerin her ikisine de uygulanır, ancak boşlukları korunması gereken elemanlar saptanırken uygulama farklı olur.

Aşağıdakilerin herhangi biri uygulanabiliyorsa bir metin düğümü korunur:

Aksi takdirde, metin düğümü ayıklanır.

xml:space öznitelikleri ağaçtan ayıklanmaz.

Not:
Eğer bir birebir hedef elemanda bir xml:space özniteliği belirtilmişse, bu uygulanır ve sonuç özniteliği içerir.

Biçembentler bakımından, boşlukları korunması gereken eleman isimleri kümesi sadece xsl:text içerir.

<!-- Grubu: tepe-seviyeden-eleman -->
<xsl:strip-space
  elements = dizgecikler />
eleman
<!-- Grubu: tepe-seviyeden-eleman -->
<xsl:preserve-space
  elements = dizgecikler />
eleman

Kaynak belgeler için, boşlukları korunması gereken eleman isimleri tepe-seviyeden elemanlar olan xsl:strip-space ve xsl:preserve-space ile belirtilir. Bir eleman isminin boşlukları korunması gereken isimler arasında bulunup bulunmadığı en iyi xsl:strip-space veya xsl:preserve-space elemanlarında belirtilmiş isimlerden saptanır. Bir eleman isminin boşlukları korunması gereken isimler arasında bulunması için gerek ve yeter koşul, bir xsl:preserve-space elemanında belirtilen isimlerden biri ile bir eşleşmenin varlığıdır. xsl:strip-space ve xsl:preserve-space elemanların ikisi de değeri boşluk ayraçlı AdSınaması listesi olan birer elements özniteliğine sahiptir; Bir elemanın bir xsl:strip-space veya xsl:preserve-space ile eşleşmesi AdSınamalarından biri ile eşleşmesi demektir. Bir elemanın bir AdSınaması ile eşleşmesi için gerek ve yeter koşul, AdSınamasının bir XPath düğüm sınaması olarak eleman için doğru olmasıdır. Birden fazla xsl:strip-space ve xsl:preserve-space elemanı ile eşleşme olduğu takdirde, en iyi eşleşen eleman, en iyi eşleşen AdSınaması saptanarak bulunur. Bu saptama örneklenim kurallarındaki yöntemle aynıdır:

Eğer bu yöntemle geriye birden fazla eşleşme kalırsa bu bir hatadır. Bir XSLT işlemci hatayı bildirebilir; eğer bildirmiyorsa, kalan eşleşmeler arasından biçembentte sona doğru yer alanını seçerek hatayı ortadan kaldırmalıdır.

3.5 XML Sürümü

Veri modeli, bir XML 1.0 belgeyi ([XML] ve [XML Adları] ile uyumlu) veya bir XML 1.1 belgeyi ([XML 1.1] ve [XML Adları 1.1] ile uyumlu) ifade edebilecek ve ikisi arasında bir ayrım yapmayacak yetenektedir. Bu bakımdan, ilke olarak, XSLT 1.0 bu XML sürümlerinden biri ile kullanılabilir; farklılık sadece, dönüşüme özel sınırların dışında, ya veri modeli metinsel XML'den (çözümlenerek) oluşturulurken ya da metinsel XML veri modelinden üretilirken (sırayla denk düşürerek) ortaya çıkar.

Veri modelinin oluşturulması bu belirtimin kapsamı dışındadır, dolayısıyla bir XSLT işlemcinin girdiyi bir XML 1.0 veya XML 1.1 belgeden ya da her ikisinden de kabul etmesi ile ilgili bir gereksinim yer almaz. Bu belge XML 1.0 veya XML 1.1 belgeleri çıktılama yeteneğini tanımlar. Ve yine, bir XSLT işlemcinin XML sürümlerinden birini veya ikisini de desteklemesi ile ilgili bir gereksinim yer almaz.

Kaynak belge ister XML 1.0 ister XML 1.1 olsun veri modeli aynı olduğundan, XSLT işleminin anlambilgisi kaynak belgenin XML sürümüne bağlı değildir. İlke olarak, tek bir dönüşümde kullanılan tüm girdi ve çıktı belgelerinin aynı XML sürümüne uygun olmasını gerektiren bir sebep yoktur.

ÖncekiYukarıSonraki
Biçembent YapısıBir Linux Kitaplığı Sayfasıİfadeler