XSLT neden web üzerinde bu kadar nadir kullanılıyor? [kapalı]


13

XSLT olgun, yaygın kabul gören bir standarttır.

Tarayıcılarda (eski IE'de bile) ve sunucu tarafında (nginx'in elbette programlama dillerinden kullanılabilen bir XSLT modülü vardır) kullanılabilir. Uygulamaları derlenmiştir ve bu nedenle Python veya JS'den çok daha hızlı olmalıdır. JS uygulaması Saxon JS, en azından bir yedek olarak kullanılabilir. Jinja, Angular, Ruby'nin İnce, ASP ve PHP şablonu bile yakın değil.

Bir XSL şablonu, bir IDE'de kolayca doğrulanabilir. Jinja veya Angular ile kaç IDE yardımcı olabilir?

XSLT ile UI ve verileri ayrıştırmak için mükemmel bir fikir gibi görünüyor.

Kuşkusuz, uygulamalar bazı köşe vakalarında farklı sonuçlar verebilir, ancak bu sadece istemci tarafında şablon oluşturma ile ilgili bir sorundur. HTML, CSS ve istemci tarafında yapılan her şey için de aynı şey geçerlidir.

Peki, neden XSLT olmasın?


4
JSON XML'den daha kolaydır. Çocuk değilim, sadece dün gece geliştiricilerin bir daha XSLT'yi tekrar kullanmak zorunda olmadıkları için ne kadar minnettar olduklarını söylediğini duydum. Bkz. Stackoverflow.com/questions/4862310/json-and-xml-comparison
Dan Wilson

6
Hiç önemsiz bir şey yapmayı denediniz mi?
PlazmaHH

9
'Kullanmak acıdır' geçerli bir cevap mı?
thisextendsthat

2
@thisextendsthat: Hayır, çünkü JavaScript ve CSS de eskiden acı çekiyordu, ancak yine de yaygın olarak kullanılıyorlardı.
JacquesB

4
@JacquesB JS ve CSS hala kullanmak için acı çekiyor .
Andy

Yanıtlar:


40

XSLT'nin modern interaktif web'de gerçekten yararlı bir rolü yoktur. XSLT'nin amacı, bir XML dilinden diğerine dönüştürmektir - ancak bunu asla ilk etapta yapmanız gerekmez. Teknolojinin çözmek için tasarlandığı probleminiz yoksa, bir teknolojinin ne kadar güçlü, hızlı ve iyi desteklendiği önemsizdir.

XSLT için kullanım durumunun ortadan kalkmasının birkaç nedeni vardır:

  • HTML kazandı. XSLT'nin, bazı anlamsal biçimlendirme biçimindeki "zengin metin" içeriğini HTML'ye dönüştürmek için yararlı olması gerekiyordu. Ancak HTML kendi başına mükemmel bir formattır, neden ilk etapta içerik için kullanmıyorsunuz ve dönüşümü atlamıyorsunuz?
  • CSS çok daha güçlü hale geldi. XSLT'nin vaatlerinden biri, kaynak işaretlemesini temiz ve anlamsal tutabilmeniz ve ardından çapraz tarayıcıda çalışan ve öğeleri yeniden düzenleyebileceğiniz "sunuma HTML" ye dönüşebilmenizdi. Ancak bugünlerde sunum HTML'sine gerçekten ihtiyacınız yok, semantik HTML kullanabilirsiniz ve CSS gerekli stil ve düzeni gerçekleştirebilir.
  • XML, veri için her yerde bulunan biçim haline gelmemiştir. Bir veritabanından SQL verilerini alırken, önce XML'e dönüştürmek ve daha sonra XSLT aracılığıyla dönüştürmek yerine, doğrudan bir şablonla birleştirmek çok daha kolaydır. Ve JSON, istemci tarafında yapılandırılmış veriler için XML yerine tüm özelliklere sahiptir.
  • XSLT bir kerede tüm belgeyi dönüştürmek için tasarlanmıştır. Ancak modern etkileşimli web sayfalarında, küçük veri parçacıkları her zaman parça parça indirilir ve sayfa ile birleştirilir.
  • Veriler o kadar karmaşık değil. Kullanım durumlarının çoğunda, yer tutucular ve tekrarlayıcılarla daha basit şablon biçimleri, görevi iyi şekilde çözer. XSLT çok daha güçlüdür, ancak nadiren bu ekstra güce ihtiyacınız vardır ve karmaşıklık ve çirkinlikte dik bir maliyeti vardır.

XSLT, tek bir yapılandırılmış kaynak biçiminden baskı, PDF ve statik web sayfaları gibi birden çok yayın biçimine kadar tek yönlü bir işlem yapabileceğiniz yayıncılıktan büyüdü. Çoğu web sitesi bu kullanım durumuna uymaz.


Çok bilgilendirici cevap (+1).
Giorgio

2
Deneyimlerimin diğer kullanıcılarınkiyle aynı olup olmadığını bilmiyorum, ancak bana açıklandığı gibi XSLT'nin "satış noktalarından" biri bant genişliğini azalttı: Büyük, düzenli bir sayfanız varsa minimum bir XML ( <chapter><title><par>...) ve XSLT gönderirsiniz ile "genişletmek" olur div, table, treklenmesiyle, gerektiğinde bu önbelleğe edilebileceğini. Yani (yine, bu "avantajı" ne kadar yaygın açıkladı bilmiyorum) gelişmiş bant genişliği de zarar olurdu (ve çoğu HTML sayfalarının oldukça küçük olması).
SJuan76

@ SJuan76: Bu, anlamsal işaretlemeyi mizanpaj için tablolar kullanan ayrıntılı sunum HTML'ye dönüştürme fikrini ele alıyor. Neyse ki düzen için tabloları kullanmak artık gerekli değildir, böylece kullanım durumu tartışmalıdır.
JacquesB

1
@JacquesB Bu sayfayı o sayfa için kullandım: programaths.be/job/job.xml ve mükemmel oldu. XML, sayfayı görüntülemek için kullanılır VE oluşturulan anketin yanıtlarını kontrol eder. Tablolarda biçimlendirme ile ilgili değil, ancak XML bana iyi bir soyutlama sunuyor. Tabii ki, hile yapan insanlar umrumda değil. Ancak modern zamanlarda bile çok yararlı olabileceğini gösteriyor!
programaths

9

"Web'de" ile ne demek istediğinize bağlıdır.

XSLT çok yaygın olarak kullanılmaktadır. StackOverflow sorularının sayısı gibi metriklerden değerlendirebildiğimiz kadarıyla, en büyük 30 programlama dilinde, muhtemelen SQL'den sonra en üst veri modeline özgü programlama dili yapıyor.

Ancak XSLT, istemci tarafında, yani tarayıcıda yaygın olarak kullanılmaz. Genellikle HTTP isteklerine yanıt olarak isteğe bağlı içerik sağlamak için sunucu tarafında kullanılır veya bir yayınlama iş akışının parçası olarak toplu modda kullanılır. Elbette, web ile çok az ilgisi olan birçok uygulamada, örneğin basılı yayınlarda da kullanılır.

XSLT'nin tarayıcıda yaygın olarak kullanılmamasının birkaç nedeni vardır. Bunun ana sebebi, iyi uyumlu XSLT desteğinin tarayıcı satıcılarından gelen çok yavaş olmasıdır; hiç kimse her tarayıcıda mevcut olana kadar kullanmak istemedi ve her tarayıcıda mevcut olana kadar, tarayıcıda yapmak istedikleri şeyler devam etti ("Web 2.0"?) ve XSLT uygulamalarını hatırladı tarayıcıda etkileşimli uygulamalar oluşturmanıza veya AJAX kullanarak veri almanıza yardımcı olmadı.

Saxonica (feragatname, bu benim ürünüm) bu boşlukları Saxon-JS ile kapatmaya çalıştı, ancak ürün partiye geç kaldı ve müşteri tarafı web geliştirme çok moda odaklı, bu yüzden sadece bir tüm teknik kutuları işaretleyen ürün. Moda odaklı olmanın bir parçası, veri odaklı sitelerin çoğunun (belge odaklı olandan farklı olarak) büyük ölçüde JSON yerine JSON'a taşınmasıdır, çünkü JSON'un Javascript'ten manipüle edilmesi çok daha kolaydır.

Diğer bir konu da XSLT'nin bir sev ya da nefret et dilidir. Açıklayıcı, kural tabanlı, işlevsel olarak yönlendirilmiş paradigması, üst düzey doğası nedeniyle birçok kişiye hitap eder, ancak tek programlama deneyimi bilgisayara tam olarak ne yapması gerektiğini söyleyen zorunlu kod yazmak olanlara rahatsız edici olabilir. Hangi düzen.


3

Bu soruyu cevaplamak ve öncelikle görüşe dayalı olarak kapatmak arasında ileri geri gidiyorum. İşte benim çevirim:

Kısacası, çünkü XML berbat bir programlama dili yapar. Ben XSLT semantiği ile ilgili bir şey ama çok daha iyi sözdizimi tamamen farklı bir konu olacağını düşünüyorum. Örneğin, gerçekten harika Lisp tabanlı XML dönüşüm dilleri var.

XSLT bir ağaç yeniden yazma dili mi, işlevsel bir dil mi, yoksa prosedürel bir dil mi olduğuna karar veremez. Tüm bunların özelliklerine sahiptir, ancak hiçbirinde gerçekten iyi değildir. Üç yönün herhangi biri için, orada daha iyi diller vardır.


XML Sözdizimi gerçekten ayrıntılı görünebilir. Ancak, her yerde desteklenen diğer diller nelerdir?
George Sovetov

XSLT mükemmel bir işlevsel dil IMO'sudur. Aşağı düştüğü yerde, dönüşümü mantığı w / bakış açısını karıştırdığı şekildedir.
RubberDuck

4
@GeorgeSoverov her yerde desteklenmesi neden önemlidir? Yalnızca sunucunuzda desteklenmesi gerekir.
Esben Skov Pedersen

1
Bir dilin çirkinliği, ilgili bir kullanım durumuna hizmet ediyorsa önemsiz olduğunu düşünüyorum. Sadece JavaScript'in başarısına tanık olun. XSLT ile ilgili sorun kullanım durumunun orada olmamasıdır.
JacquesB

1
Kesinlikle bunun kanaat temelli cevapları çeken bir soru olduğunu gösterdiniz ...
Michael Kay

0

Çünkü XML, vakaların% 99.9'u için eski geriye dönük uyumluluk önemsiz gibi görünüyor.

XML'in hemen üstün değiştirmelere sahip olmadığı tek kullanım örneği docx veya odf gibi şeylerdir ve SGML'nin daha iyi olması mümkündür *. Yani, büyük dönüşümler uygulanarak birbirinin içine yerleştirilmiş her türlü şeyle inanılmaz derecede zengin belge yapısına sahibiz, böylece ekranda ve yazıcıda doğru görünebilir.

Hemen hemen her zaman, XML yapılandırılmış veriyi aktarmak için kullanılır ve XSLT'nin yapılandırılmış belge verilerini belge verilerine dönüştürmek için tasarlandığı görülmektedir. Bu kullanım durumu yok oluyor. JSON, yapılandırılmış veriler için XML'den doğrudan üstündür. ** Hem işaretleme hem de YAML, hafif biçimlendirilmiş verilerde üstündür. XML'in ilk açıklaması Java ve Javacript'teki yerleşik ayrıştırıcılardı. JSON, JSON kaynağının güvenilir olduğu durumlar için yerleşik bir ayrıştırıcı kullanarak bu engeli kırdı (çoğu gençken bunlardan biriydi).

Ve dünya değişti. Yerleşik kütüphane avantajı artık önemsiz bir avantaj. XHTML açıkça reddedildi ve değiştirilmesi ondan miras değil, selefinden miras kaldı.

XML artık doğrudan onu almak isteyen adamla konuşmak için kullanılıyor ve tam olarak istenen formatta bir bez içinde üretiliyor veya tam tersine okunuyor ve doğrudan gönderildiği formdan nesne modeline ayrıştırılıyor. depolama biçimine veya evrensel değişim biçimine dönüştürdüğünden, artık onu şemadan şemaya dönüştürmek gerekmez.

* Üniversitede SGML'nin asla uygulanmadığını öğrettiler. Onlar yalan söylediler.

** JSON'da bozuk sayı biçimleriyle ilgili şikayetleri duydum. Öte yandan XML'in sayı biçimi yoktur, bu nedenle dize içindeki tüm veri türlerini doldurmak hala XML'e karşı kazanır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.