Transclusion - Transclusion

Bu örnekte, dosyanın verileri B belgeye aktarılır Bir.

İçinde bilgisayar Bilimi, aşma bir kısmının veya tamamının dahil edilmesidir elektronik belge tarafından bir veya daha fazla başka belgeye köprü metni referans. Transclusion, genellikle referans veren belge görüntülendiğinde gerçekleştirilir ve normalde otomatiktir ve son kullanıcıya şeffaftır.[1] Geçişin sonucu, farklı kaynaklardan dinamik olarak bir araya getirilen ve muhtemelen farklı yerlerde farklı bilgisayarlarda depolanan parçalardan oluşan tek bir entegre belgedir.

Transclusion kolaylaştırır Modüler tasarım: a kaynak bir kez saklanır ve birden çok belgede yeniden kullanılmak üzere dağıtılır. Bir kaynakta yapılan güncellemeler veya düzeltmeler daha sonra herhangi bir referans belgesine yansıtılır. Ted Nelson 1980 doğrusal olmayan kitabının terimini icat etti Edebiyat Makineleri ama fikri ana kopya ve olaylar 17 yıl önce uygulandı Eskiz defteri.

Teknik hususlar

Bağlam tarafsızlığı

Transclusion, metnin transcluded bölümleri kendi içinde olduğunda daha iyi çalışır, böylece metnin anlamı ve geçerliliği bağlamdan bağımsız olur. Örneğin, "önceki bölümde açıklandığı gibi" gibi formülasyonlar sorunludur, çünkü eklenmiş bölüm farklı bir bağlamda görünebilir ve karışıklığa neden olabilir. "Bağlamdan bağımsız" metni neyin oluşturduğu değişiklik gösterir, ancak genellikle şirket bilgileri veya Basmakalıp.

Parametrelendirme

Bazı durumlarda ve bazı teknik bağlamlarda, metnin çevrelenmiş bölümleri, "bağlam tarafsızlığı" ilkesine sıkı sıkıya bağlı kalmayı gerektirmeyebilir, çünkü çevrelenen bölümler şunları yapabilir: parametrelendirme. Parametrelendirme, dönüştürülmüş bir metnin belirli bölümlerini veya alt bölümlerini, bağımsız olarak değiştirilebilen dışsal değişkenlere bağlı olarak değiştirme yeteneğini ifade eder. Bu, geleneksel olarak, bir veya daha fazla transcluded metin sağlanarak yapılır. ikame yer tutucuları. Bu yer tutucular daha sonra, dönüştürülmüş nihai çıktıyı bağlam içinde oluşturmadan önce karşılık gelen değişken değerlerle değiştirilir.

Kökenler

Dosya içeriğini yeniden kullanma kavramı bilgisayar programlama dilleriyle başladı: COBOL 1960 yılında[2] bunu takiben BCPL, PL / I, C,[3] ve 1990'larda, hatta FORTRAN.[4] Bir direktif dahil ortak izin verir kaynak kodu tuzaklarından kaçınırken yeniden kullanılacak Kopyala ve yapıştır programlama ve zor kodlama sabitler. Pek çok yenilikte olduğu gibi, bir problem gelişti. Birden çok include yönergesi, başka bir include yönergesiyle aynı içeriği sağlayabilir ve yanlışlıkla aynı kaynak kodun nihai sonuca tekrarlanmasına neden olarak hata. Muhafızları dahil et tek bir içerik eklendikten sonra, daha sonra yinelenen içeriği çıkararak bunu çözmeye yardımcı olun.[5]

Tek, yeniden kullanılabilir bir bilgi kaynağı fikri, aşağıdaki gibi kavramlara yol açar: Kendini tekrar etme ve soyutlama ilkesi. Programları daha fazla yapmak için başka bir kullanım bulundu taşınabilir. Taşınabilir kaynak kodu, bir standart kitaplık, her bilgisayar ortamına göre değişen sisteme özel kaynak kodunu içeren.[6]

Xanadu Projesi'nin tarihi ve uygulaması

"Hypertext" ve "kelimelerini de yaratan Ted Nelson,hiper medya ", 1980 kitabında" transclusion "terimini icat etti Edebiyat Makineleri. Önerisinin bir kısmı fikriydi mikro ödemeler Çeşitli yerlerden kaç tane içerik pasajı alınmış olursa olsun, tüm metin için okuyucudan otomatik olarak talep edilebilir.

Bununla birlikte, Nelson'a göre, aşma kavramı zaten onun 1965'teki tanımının bir parçasını oluşturmuştu. köprü metni.[7] Nelson, transclusion'ı "... birden fazla yerde bilinebilir şekilde aynı içerik" olarak tanımlıyor ve onu daha özel durumlardan ayırarak, örneğin içeriğin farklı bir konumdan dahil edilmesi ( transdelivery) veya açık bir teklif kökenine bağlı kalır (ki buna aktarım).

Ted Nelson'ınki dahil bazı hiper metin sistemleri Xanadu Projesi, aşımı destekleyin.[8]

Nelson, Little Transquoter adlı Web transclusion'ın bir tanıtımını yaptı (2004-2005'te Andrew Pam tarafından Nelson'ın şartnamesine göre programlandı).[9] Web sayfalarındaki bölüm adresleri üzerine inşa edilen yeni bir format oluşturur; başvurulduğunda, ortaya çıkan sayfadaki her bölüm orijinal bağlamına tıklanarak bağlı kalır.

Web Üzerinden Uygulama

HTTP, bir aktarım protokolü olarak, geçiş için temel bir desteğe sahiptir. bayt hizmeti: bir belirtme bayt aralığı HTTP istek mesajında.

Transclusion, iletimden önce (sunucu tarafı) veya sonra (istemci tarafı) gerçekleşebilir. Örneğin:

  • Bir HTML belgesi istemciye teslim edilmeden önce Sunucu Tarafı Kodları veya başka bir sunucu tarafı uygulama kullanılarak sunucu tarafından önceden oluşturulabilir.
  • XML Varlıkları veya HTML Nesneleri, müşteri tarafından ayrıştırılabilir, bu da karşılık gelen kaynakları ana belgeden ayrı olarak ister.
  • Bir web tarayıcısı, kendi algoritmalarını kullanarak öğeleri önbelleğe alabilir ve bu, belgenin biçimlendirmesinde açık yönergeler olmadan çalışabilir.
  • AngularJS iç içe yerleştirilmiş yönerge işlemi için transclusion kullanır.[10]

Web içeriği yayıncıları, materyallerin kendi web sitelerinden başka web sitelerine aktarılmasına itiraz edebilir veya bunu yapmak için bir anlaşma isteyebilirler. Uygulamayı eleştirenler, çeşitli biçimlerde satır içi bağlantı gibi bant genişliği hırsızlığı veya kurmaya çalışan.

Diğer yayıncılar, materyallerinin şu şekilde başka web sitelerine aktarılmasını özellikle isteyebilirler: web reklamcılığı veya as aletler gibi sayacı vur veya web hatası.

Mashup'lar kaynakları veya verileri yeni bir uygulamaya yerleştirmek için geçişten yararlanın, örneğin coğrafi etiketli etkileşimli bir harita üzerinde veya işletme ölçümlerini etkileşimli olarak görüntüleyerek fotoğraflar Gösterge Paneli.

İstemci tarafı HTML

HTML istemci tarafı transclusion için öğeleri tanımlar Görüntüler, Kodlar, stil sayfaları, diğer belgeler, ve diğer medya türleri. HTML, bu tür nesnelerin ham verilerini satır içi olarak bir web sayfasının biçimlendirmesine gömmek yerine, Web'in ilk günlerinden itibaren (böylece web sayfaları, multimedya öğelerinin yüklenmesi bitmeden önce daha hızlı görüntülenebilir) istemci tarafı aktarımına büyük ölçüde güvendi.

Gibi teknikler aracılığıyla Ajax, bir HTML belgesiyle ilişkili komut dosyaları, web sunucusundan sayfanın tamamen yeni bir sürümünü çekmeye yönelik önceki tekniğin aksine, bir web tarayıcısına belgeyi yerinde değiştirme talimatı verebilir. Bu tür komut dosyaları, örneğin, kullanıcı girdisine veya değişen koşullara yanıt olarak, web tarayıcısı sayfayı oluşturduktan sonra bir sunucudaki öğeleri veya belgeleri aktarabilir.

Gelecekteki HTML sürümleri, belge bölümlerinin daha derinlemesine dönüştürülmesini destekleyebilir. XML gibi teknolojiler varlıklar, XPointer belge referansı ve XSLT manipülasyonlar. XPointer patentlidir ancak aşağıdaki lisanslara sahiptir: telifsiz şartlar.[11]

Proxy sunucuları yaygın olarak talep edilen kaynakların gereksiz aktarımlarını azaltmak için geçişi kullanabilir.

Olarak bilinen popüler bir Ön Uç Çerçevesi AngularJS tarafından geliştirildi ve sürdürüldü Google , transclusion kullanan en yakın ana direktifin transcluded DOM için ekleme noktasını işaretleyen ng-transclude çağrısı çağrısına sahiptir.

Sunucu tarafı transclusion

Transclusion, sunucu tarafında olduğu gibi gerçekleştirilebilir. Sunucu Tarafı İçerir ve biçimlendirme varlığı referansları sunucu yazılımı tarafından çözüldü. Bir özelliğidir ikame şablonları.

Kaynak kodun dönüştürülmesi

Kaynak kodun yazılım tasarımına veya referans malzemelerine aktarılması, kaynak kodun belge içinde sunulmasına izin verir, ancak belgenin bir parçası olarak yorumlanmamasına ve kaynak kod tabanına göre eklenen kodun anlamsal tutarlılığını korur.

Ayrıca bakınız

Referanslar

  1. ^ Glushko, Robert J., ed. (2013). Örgütlenme Disiplini. Cambridge, Massachusetts: MIT Press. s. 231. ISBN  9780262518505.
  2. ^ Elektronik Dijital Bilgisayarların Programlanması için ORTAK İŞ ODAKLI DİL (COBOL) için İlk Özellikler (PDF). Washington: Savunma Bakanlığı. Nisan 1960. s. V-27. Dahil Et: İşlev: Kitaplık alt yordamlarını otomatik olarak kaynak programa dahil ederek programcının çabasını kaydetmek için.
  3. ^ Ritchie, Dennis M. (1993-03-01). "C dilinin gelişimi". ACM SIGPLAN Bildirimleri. 28 (3): 201–208. doi:10.1145/155360.155580. Arşivlenen orijinal 27 Şubat 2020. 1972-3 civarında birçok başka değişiklik meydana geldi, ancak en önemlisi önişlemci, kısmen Alan Snyder'in [Snyder 74] ısrarıyla, ama aynı zamanda, mevcut [sic] dosya dahil etme mekanizmalarının BCPL ve PL / I. Orijinal sürümü son derece basitti ve yalnızca dahil edilmiş dosyalar ve basit dizi değiştirmeleri: #Dahil etmek ve # parametresiz makroların tanımı. Kısa süre sonra, çoğunlukla tarafından uzatıldı Mike Lesk ve sonra John Reiser tarafından bağımsız değişkenli makrolar ve koşullu derleme. Önişlemci, başlangıçta dilin kendisine isteğe bağlı bir tamamlayıcı olarak kabul edildi. Alt URL
  4. ^ Adams, Jeanne C .; Brainerd, Walter S .; Martin, Jeanne T .; Smith, Brian T .; Wagener, Jerrold L. (1992). Fortran 90 El Kitabı: Eksiksiz ANSI / ISO Referansı (PDF). New York City: McGraw-Hill Kitap Şirketi. s. 65. ISBN  0-07-000406-4. INCLUDE satırı, belirli bir dosyadan kaynak kodunun eklenmesine izin veren Fortran'daki yeni bir özelliktir. Aynı metni bir programın birçok yerine yerleştirmenin uygun bir yoludur.[ölü bağlantı ] Alt URL
  5. ^ Stallman, Richard M.; Weinberg, Zachary. "Başlık Dosyaları" (PDF). C Ön İşlemcisi: gcc sürüm 6.3.0 (GCC) için. s. 10–11. Wrapper #ifndef için alternatifler: CPP bir başlık dosyasının yalnızca bir kez okunması gerektiğini belirtmenin iki yolunu daha destekler. Hiçbiri "#ifndef" sarmalayıcı kadar taşınabilir değildir ve bunları yeni programlarda kullanmamanızı öneririz. "#İmport" uygulamasının standart uygulama olduğu uyarısı ile Amaç-C. [...] Bir başlık dosyasının birden çok kez dahil edilmesini önlemenin bir başka yolu da '#pragma bir kez ’Yönergesi. Bir başlık dosyası taranırken "#pragma bir kez" görülürse, bu dosya bir daha asla okunmayacaktır, ne olursa olsun.
  6. ^ Johnson, S. C.; Ritchie, D.M. (Temmuz – Ağustos 1978). "UNIX zaman paylaşım sistemi: C programlarının ve UNIX sisteminin taşınabilirliği". Bell Sistemi Teknik Dergisi. 57 (6): 2021–2048. doi:10.1002 / j.1538-7305.1978.tb02141.x. ISSN  0005-8580. S2CID  17510065. Alındı 27 Şubat 2020. Gelmeden önce bile Veriler arası makine, yukarıda belirtildiği gibi, birçok programın yalnızca istenmeyen bir dereceye kadar bağlı olduğunu fark etti. UNIX G / Ç kuralları, ancak özellikle uygun tamponlama stratejilerinin ayrıntıları hakkında PDP-11. "taşınabilir G / Ç kitaplığı," tarafından yazıldı M. E. Lesk ve Honeywell ve IBM makineleri ve PDP-11, önceki paketlerin eksikliklerinin üstesinden gelmek için genel olarak başarılı bir çaba içinde
  7. ^ Theodor H. Nelson, "Karmaşık, Değişen ve Belirsiz Olanlar İçin Bir Dosya Yapısı." ACM 20. Ulusal Konferansı Bildirileri (1965), s. 84-100
  8. ^ Kolbitsch, Josef; Maurer, Hermann (27 Ocak 2017). "HTML Tabanlı Bir Ortamda Geçişler" (PDF). Alındı 27 Ocak 2017.
  9. ^ Küçük Transquoter Xanadu.com.au
  10. ^ "AngularJS". docs.angularjs.org. Alındı 2016-08-11.
  11. ^ "XPointer Patent Beyanları". World Wide Web Konsorsiyumu.

daha fazla okuma

Dış bağlantılar