DOM (Belge Nesne Modeli) Nedir?
Document Object Model (DOM), HTML ve XML belgeleri için bir programlama API’sidir. Belgelerin mantıksal yapısını ve bir belgeye nasıl erişildiğini ve değiştirildiğini tanımlar. DOM belirtiminde, “belge” terimi geniş anlamda kullanılmaktadır – giderek artan bir şekilde XML, çeşitli sistemlerde depolanabilecek birçok farklı türde bilgiyi temsil etmenin bir yolu olarak kullanılmaktadır ve bunun çoğu geleneksel olarak şu şekilde görülecektir: belgelerden ziyade verilerdir. Bununla birlikte, XML bu verileri belgeler olarak sunar ve bu verileri yönetmek için DOM kullanılabilir.
Belge Nesne Modeli ile programcılar belgeler oluşturabilir ve oluşturabilir, yapılarında gezinebilir ve öğeler ve içerik ekleyebilir, değiştirebilir veya silebilir. Bir HTML veya XML belgesinde bulunan her şeye Belge Nesne Modeli kullanılarak erişilebilir, değiştirilebilir, silinebilir veya birkaç istisna dışında eklenebilir – özellikle, dahili alt küme ve harici alt küme için DOM arabirimleri henüz belirlenmemiştir.
Belge Nesne Modeli nedir?
Belge Nesne Modeli, belgeler için bir programlama API’sidir. Nesne modelinin kendisi, modellediği belgelerin yapısına çok benzer. Örneğin, bir HTML belgesinden alınan bu tabloyu düşünün:
<TABLE> <ROWS> <TR> <TD>tablo veri 1</TD> <TD>tablo veri 2</TD> </TR> <TR> <TD>tablo veri 3</TD> <TD>tablo veri 4</TD> </TR> </ROWS> </TABLE>
Belge Nesne Modelinde, belgeler bir ağaca çok benzeyen mantıksal bir yapıya sahiptir; daha doğrusu, birden fazla ağaç içerebilen bir “orman” veya “koru” gibidir. Ancak, Belge Nesne Modeli, belgelerin ağaç veya koru olarak uygulanacağını veya nesneler arasındaki ilişkilerin herhangi bir şekilde nasıl uygulanacağını belirtmez. Başka bir deyişle, nesne modeli, programlama arayüzü için mantıksal modeli belirtir ve bu mantıksal model, belirli bir uygulamanın uygun bulduğu herhangi bir şekilde uygulanabilir. Bu belirtimde, bir belgenin ağaç benzeri temsilini tanımlamak için yapı modeli terimini kullanıyoruz; belirli bir uygulamayı ima etmekten kaçınmak için “ağaç” veya “koru” gibi terimlerden özellikle kaçınıyoruz. DOM yapı modellerinin önemli bir özelliği yapısal izomorfizmdir: aynı belgenin bir temsilini oluşturmak için herhangi iki Belge Nesne Modeli uygulaması kullanılırsa, tam olarak aynı nesneler ve ilişkilerle aynı yapı modelini oluştururlar.
“Belge Nesne Modeli” adı, geleneksel nesne yönelimli tasarım anlamında kullanılan bir “nesne modeli” olduğu için seçilmiştir: belgeler nesneler kullanılarak modellenir ve model yalnızca bir belgenin yapısını değil, aynı zamanda davranışını da kapsar. bir belge ve onu oluşturan nesneler. Başka bir deyişle, yukarıdaki diyagramdaki düğümler bir veri yapısını temsil etmezler, işlevleri ve kimliği olan nesneleri temsil ederler. Bir nesne modeli olarak, Belge Nesne Modeli şunları tanımlar:
- bir belgeyi temsil etmek ve işlemek için kullanılan arayüzler ve nesneler
- bu arayüzlerin ve nesnelerin semantiği – hem davranış ve nitelikler de dahil
- bu arayüzler ve nesneler arasındaki ilişkiler ve işbirlikleri
SGML belgelerinin yapısı geleneksel olarak bir nesne modeliyle değil, soyut bir veri modeliyle temsil edilir. Soyut bir veri modelinde, model veri etrafında ortalanır. Nesne yönelimli programlama dillerinde, verilerin kendisi, verileri gizleyen ve doğrudan harici manipülasyondan koruyan nesnelerde kapsüllenir. Bu nesnelerle ilişkili işlevler, nesnelerin nasıl manipüle edilebileceğini belirler ve bunlar nesne modelinin bir parçasıdır.
Belge Nesne Modeli şu anda DOM Çekirdeği ve DOM HTML olmak üzere iki bölümden oluşmaktadır. DOM Çekirdeği, XML belgeleri için kullanılan işlevselliği temsil eder ve ayrıca DOM HTML için temel görevi görür. Tüm DOM uygulamaları, Çekirdek belirtiminde “temel” olarak listelenen arabirimleri desteklemelidir; ayrıca, XML uygulamaları, Çekirdek belirtiminde “genişletilmiş” olarak listelenen arabirimleri desteklemelidir. Düzey 1 DOM HTML belirtimi, HTML belgeleri için gereken ek işlevleri tanımlar.
Belge Nesne Modeli ne değildir?
Bu bölüm, Belge Nesne Modelini, ona benzeyen diğer sistemlerden ayırarak daha kesin bir şekilde anlaşılmasını sağlamak için tasarlanmıştır.
Belge Nesne Modeli Dinamik HTML’den güçlü bir şekilde etkilenmiş olsa da, Düzey 1’de Dinamik HTML’nin tamamını uygulamaz. Özellikle, olaylar henüz tanımlanmamıştır. Düzey 1, belgenin kendisinin sağlam ve esnek bir modelini sağlayarak bu tür işlevsellik için sağlam bir temel oluşturmak üzere tasarlanmıştır.
Belge Nesne Modeli, ikili bir belirtim değildir. Aynı dilde yazılmış Belge Nesne Modeli programları, platformlar arasında kaynak koduyla uyumlu olacaktır, ancak Belge Nesne Modeli herhangi bir ikili birlikte çalışabilirlik biçimi tanımlamaz.
Belge Nesne Modeli, nesneleri XML veya HTML’de kalıcı hale getirmenin bir yolu değildir. Nesnelerin XML’de nasıl temsil edilebileceğini belirtmek yerine, Belge Nesne Modeli, XML ve HTML belgelerinin nesneler olarak nasıl temsil edildiğini belirtir, böylece nesne yönelimli programlarda kullanılabilirler.
Belge Nesne Modeli bir dizi veri yapısı değildir, arayüzleri belirten bir nesne modelidir. Bu belge, üst/alt ilişkileri gösteren diyagramlar içermesine rağmen, bunlar herhangi bir belirli dahili veri yapısının temsili değil, programlama arayüzleri tarafından tanımlanan mantıksal ilişkilerdir.
Belge Nesne Modeli, XML veya HTML’nin “gerçek iç semantiğini” tanımlamaz. Bu dillerin semantiği, dillerin kendileri tarafından tanımlanır. Belge Nesne Modeli, bu anlambilime saygı göstermek için tasarlanmış bir programlama modelidir. Belge Nesne Modeli, XML ve HTML belgelerini yazma şeklinize ilişkin herhangi bir sonuca sahip değildir; bu dillerde yazılabilen herhangi bir belge Belge Nesne Modeli’nde temsil edilebilir.
Belge Nesne Modeli, adına rağmen, Bileşen Nesne Modeli’nin (COM) rakibi değildir. COM, CORBA gibi, arayüzleri ve nesneleri belirtmenin dilden bağımsız bir yoludur; Belge Nesne Modeli, HTML ve XML belgelerini yönetmek için tasarlanmış bir dizi arabirim ve nesnedir. DOM, COM veya CORBA gibi dilden bağımsız sistemler kullanılarak uygulanabilir; ayrıca bu belgede belirtilen Java veya ECMAScript bağlamaları gibi dile özgü bağlamalar kullanılarak da uygulanabilir.
Belge Nesne Modeli nereden geldi?
Belge Nesne Modeli, JavaScript komut dosyalarının ve Java programlarının web tarayıcıları arasında taşınabilir olmasına izin veren bir belirtim olarak ortaya çıkmıştır. Dinamik HTML, Belge Nesne Modelinin hemen atasıdır ve başlangıçta büyük ölçüde tarayıcılar açısından düşünülmüştür. Ancak, Belge Nesne Modeli Çalışma Grubu oluşturulduğunda, HTML veya XML düzenleyicileri ve belge havuzları dahil olmak üzere diğer alanlardaki satıcılar da bu gruba katıldı. Bu satıcıların birçoğu, XML geliştirilmeden önce SGML ile çalışmıştı; sonuç olarak, Belge Nesne Modeli, SGML Groves ve HyTime standardından etkilenmiştir. Bu satıcılardan bazıları, SGML/XML düzenleyicileri veya belge havuzları için programlama API’leri sağlamak amacıyla belgeler için kendi nesne modellerini de geliştirmişti ve bu nesne modelleri aynı zamanda Belge Nesne Modelini de etkilemiştir.
Varlıklar ve DOM Çekirdeği
Temel DOM arayüzlerinde varlıkları temsil eden nesneler yoktur. HTML ve XML’deki sayısal karakter referansları ve önceden tanımlanmış varlıklara yapılan referanslar, varlığın yerini alan tek karakterle değiştirilir. Örneğin:
<p>Bu bir köpek& ve bir kedi</p>
“&”, “&” karakteriyle değiştirilecek ve <p> öğesindeki metin tek bir sürekli karakter dizisi oluşturacaktır. Hem dahili hem de harici genel varlıkların temsili, Düzey 1 belirtiminin genişletilmiş (XML) arabirimlerinde tanımlanır. Not: Bir belgenin DOM temsili XML veya HTML metni olarak serileştirildiğinde, uygulamaların sayısal veya önceden tanımlanmış bir varlık kullanarak kaçılması gerekip gerekmediğini görmek için metin verilerindeki her karakteri kontrol etmesi gerekir. Bunu yapmamak, geçersiz HTML veya XML ile sonuçlanabilir.
DOM Arayüzleri ve DOM Uygulamaları
DOM, XML veya HTML belgelerini yönetmek için kullanılabilecek arabirimleri belirtir. Bu arabirimlerin bir soyutlama olduğunun farkına varmak önemlidir – C++’daki “soyut temel sınıflar” gibi, bir uygulamanın bir belgenin dahili temsiline erişme ve bunları işlemenin bir yolunu belirtmenin bir yoludur. Özellikle, arayüzler belirli bir somut uygulama anlamına gelmez. Her DOM uygulaması, bu belirtimde gösterilen arabirimler desteklendiği sürece, belgeleri herhangi bir uygun temsilde tutmakta serbesttir. Bazı DOM uygulamaları, DOM spesifikasyonu mevcut olmadan çok önce yazılmış yazılımlara erişmek için DOM arayüzlerini kullanan mevcut programlar olacaktır. Bu nedenle, DOM, uygulama bağımlılıklarından kaçınmak için tasarlanmıştır; özellikle,
- IDL’de tanımlanan nitelikler, belirli veri üyelerine sahip olması gereken somut nesneler anlamına gelmez – dil bağlamalarında, bir veri üyesine değil, bir çift get()/set() işlevine çevrilir. (Salt okunur işlevlerin dil bağlamalarında yalnızca bir get() işlevi vardır).
- DOM uygulamaları, bu belirtimde bulunmayan ek arabirimler ve nesneler sağlayabilir ve yine de DOM uyumlu olarak kabul edilir.
- Oluşturulacak gerçek nesneleri değil, arabirimleri belirttiğimiz için DOM, bir uygulama için hangi kurucuların çağrılacağını bilemez. Genel olarak, DOM kullanıcıları, belge yapıları oluşturmak için Document sınıfındaki createXXX() yöntemlerini çağırır ve DOM uygulamaları, createXXX() işlevlerinin uygulamalarında bu yapıların kendi dahili temsillerini yaratır.
Birinci Seviyenin Sınırlamaları
DOM Düzey 1 belirtimi, belge yapısını ve içeriğini temsil etmek ve değiştirmek için gereken yöntemlerle kasıtlı olarak sınırlandırılmıştır. DOM spesifikasyonunun Gelecek Düzeyleri şunları sağlayacaktır:
- İç alt küme ve dış alt küme için yapısal bir model.
- Bir şemaya karşı doğrulama.
- Stil sayfaları aracılığıyla belge oluşturma kontrolü.
- Giriş kontrolu.
- İplik güvenliği.