Mengapa XSLT sangat jarang digunakan di web? [Tutup]

12

XSLT adalah standar yang matang dan diterima secara luas.

Ini dapat digunakan di browser (bahkan di IE lama) dan di sisi server (nginx memiliki modul XSLT, yang dapat digunakan dari bahasa pemrograman, tentu saja). Implementasinya dikompilasi dan karenanya harus jauh lebih cepat daripada Python atau JS. Implementasi JS Saxon JS dapat digunakan, setidaknya, sebagai mundur. Jinja, Angular, Ruby Slim, ASP dan templating PHP bahkan tidak dekat.

Template XSL dapat dengan mudah divalidasi dalam IDE. Berapa banyak IDE yang dapat membantu dengan Jinja atau Angular?

Sepertinya ide yang sempurna untuk menguraikan UI dan data dengan XSLT.

Memang, implementasi dapat memberikan hasil yang berbeda dalam beberapa kasus sudut, tetapi itu hanya masalah dengan templating di sisi klien. Dan itu sama dengan HTML, CSS, dan semua hal lain yang dilakukan di sisi klien.

Jadi, mengapa tidak XSLT?

George Sovetov
sumber
4
JSON lebih mudah daripada XML. Saya tidak bercanda, tadi malam saya mendengar pengembang mengatakan betapa bersyukurnya mereka bahwa mereka tidak pernah menggunakan XSLT lagi. Lihat: stackoverflow.com/questions/4862310/json-and-xml-comparison
Dan Wilson
6
Pernahkah Anda mencoba melakukan sesuatu yang tidak biasa dengan itu?
PlasmaHH
9
Apakah 'karena sangat sulit menggunakan' jawaban yang valid ..?
thisextendsthat
2
@stextendsthat: Tidak, karena JavaScript dan CSS juga digunakan untuk digunakan, tetapi masih digunakan secara luas.
JacquesB
4
@JacquesB JS dan CSS masih menderita untuk digunakan.
Andy

Jawaban:

39

XSLT tidak benar-benar memiliki peran yang berguna di web interaktif modern. Tujuan XSLT adalah untuk mengubah dari satu bahasa XML ke bahasa lain - tetapi Anda sebenarnya tidak perlu melakukannya sejak awal. Seberapa kuat, cepat, dan didukungnya suatu teknologi tidak relevan jika Anda tidak memiliki masalah yang dirancang untuk diselesaikan oleh teknologi tersebut.

Ada beberapa alasan mengapa use case untuk XSLT telah hilang:

  • HTML telah menang. XSLT seharusnya berguna untuk mengubah konten "teks kaya" dalam beberapa format markup semantik ke dalam HTML. Tapi HTML itu sendiri adalah format yang sangat bagus, jadi mengapa tidak menggunakannya untuk konten di tempat pertama dan melewatkan transformasi?
  • CSS telah menjadi jauh lebih kuat. Salah satu janji XSLT adalah bahwa Anda dapat menjaga markup sumber bersih dan semantik dan kemudian mengubahnya menjadi "HTML presentasi" yang berfungsi lintas browser dan di mana Anda dapat mengatur ulang elemen dan sebagainya. Tetapi Anda tidak benar-benar membutuhkan HTML presentasi hari ini, Anda dapat menggunakan HTML semantik dan CSS dapat melakukan gaya dan tata letak yang diperlukan.
  • XML belum menjadi format data di mana-mana. Ketika mengambil data SQL dari database, jauh lebih mudah untuk langsung menggabungkannya ke dalam template, daripada mengubahnya terlebih dahulu menjadi XML dan kemudian mengubahnya melalui XSLT. Dan JSON telah menggantikan XML untuk data terstruktur di sisi klien.
  • XSLT dirancang untuk mengubah seluruh dokumen sekaligus. Tetapi di halaman web interaktif modern, potongan kecil data diunduh sedikit demi sedikit setiap saat dan digabungkan ke dalam halaman.
  • Data tidak begitu rumit. Untuk sebagian besar kasus penggunaan, format templat yang lebih sederhana dengan placeholder dan repeater menyelesaikan tugas dengan baik. XSLT jauh lebih kuat, tetapi Anda jarang membutuhkan daya ekstra, dan itu memiliki biaya yang tinggi dalam kompleksitas dan kejelekan.

XSLT tumbuh dari penerbitan di mana Anda dapat memiliki proses satu arah dari satu format sumber terstruktur ke beberapa format penerbitan seperti cetak, PDF dan halaman web statis. Sebagian besar situs web tidak cocok dengan use case ini.

JacquesB
sumber
Jawaban yang sangat informatif (+1).
Giorgio
2
Saya tidak tahu apakah pengalaman saya sama dengan pengguna lain, tetapi salah satu "nilai jual" XSLT seperti yang dijelaskan kepada saya adalah berkurangnya bandwidth: jika Anda memiliki halaman yang besar dan teratur, Anda mengirim XML minimal ( <chapter><title><par>...) dan XSLT akan "memperluas" itu dengan div, table, trsesuai kebutuhan, dengan tambahan bahwa hal itu bisa di-cache. Jadi (sekali lagi, saya tidak tahu seberapa luas "keuntungan" ini menjelaskan) bandwidth yang ditingkatkan juga akan merusaknya (dan fakta bahwa sebagian besar halaman HTML cukup kecil).
SJuan76
@ SJuan76: Itu adalah gagasan untuk mengubah markup semantik menjadi HTML presentasi verbal yang menggunakan tabel untuk tata letak. Untungnya tidak lagi perlu menggunakan tabel untuk tata letak sehingga use case diperdebatkan.
JacquesB
1
@ JacquesB Saya menggunakan pasangan itu untuk halaman itu: programaths.be/job/job.xml dan itu membuatnya sempurna. XML digunakan untuk menampilkan halaman DAN memeriksa jawaban untuk kuesioner yang dihasilkan. Ini bukan tentang memformat dalam tabel, tetapi XML menawarkan saya abstraksi yang baik. Tentu saja, saya tidak peduli dengan orang yang curang. Tapi itu menunjukkan bahwa bahkan di zaman modern, itu bisa sangat berguna!
programaths
9

Tergantung apa yang Anda maksud dengan "di Web".

XSLT sangat banyak digunakan. Sejauh kita dapat menilai dari metrik seperti jumlah pertanyaan StackOverflow, ia berada dalam 30 bahasa pemrograman teratas, yang mungkin menjadikannya bahasa pemrograman data-model-spesifik teratas setelah SQL.

Tetapi XSLT tidak banyak digunakan di sisi klien, yaitu di browser. Biasanya digunakan sisi server untuk mengirimkan konten sesuai permintaan sebagai respons terhadap permintaan HTTP, atau digunakan dalam mode batch sebagai bagian dari alur kerja penerbitan. Ini juga digunakan, tentu saja, dalam banyak aplikasi yang sangat sedikit hubungannya dengan web, misalnya dalam penerbitan cetak.

Ada beberapa alasan XSLT tidak banyak digunakan di browser. Alasan utama adalah bahwa dukungan XSLT konforman yang baik sangat lambat datang dari vendor browser; tidak ada yang ingin menggunakannya sampai tersedia di setiap browser, dan pada saat itu tersedia di setiap browser, hal-hal yang ingin dilakukan orang di browser telah pindah (ingat "Web 2.0"?) dan implementasi XSLT di browser tidak membantu Anda membangun aplikasi interaktif atau mengambil data menggunakan AJAX.

Saxonica (penafian, ini adalah produk saya) telah berusaha untuk mengisi celah ini dengan Saxon-JS, tetapi produk tersebut adalah latecomer untuk pesta, dan pengembangan web sisi klien sangat didorong oleh mode, jadi tidak cukup hanya dengan memiliki produk yang mencentang semua kotak teknis. Bagian dari mode yang didorong adalah bahwa sebagian besar situs berorientasi data (berbeda dari berorientasi dokumen) telah bergerak ke arah JSON daripada XML, sebagian besar karena JSON jauh lebih mudah untuk dimanipulasi dari Javascript.

Masalah lainnya adalah bahwa XSLT adalah bahasa love-it-or-hate-it. Paradigma deklaratif, berbasis aturan, berorientasi fungsional menarik bagi banyak orang karena sifatnya yang tingkat tinggi, tetapi dapat mengesampingkan mereka yang hanya memiliki pengalaman pemrograman adalah menulis kode imperatif yang memberi tahu komputer apa yang harus dilakukan dan dalam pesanan apa.

Michael Kay
sumber
3

Saya membalik-balik antara menjawab pertanyaan ini dan menutupnya sebagai yang berdasarkan opini. Jadi, inilah flip saya:

Singkatnya, karena XML membuat bahasa pemrograman yang jelek. Sesuatu dengan semantik XSLT tetapi sintaks yang jauh lebih baik akan menjadi masalah yang sama sekali berbeda, saya pikir. Ada beberapa bahasa transformasi-XML berbasis Lisp yang sangat keren, misalnya.

XSLT tidak dapat memutuskan apakah ingin menjadi bahasa penulisan ulang pohon, bahasa fungsional, atau bahasa prosedural. Ini memiliki fitur semua itu, tetapi tidak benar-benar bagus di antara mereka. Untuk salah satu dari tiga aspek, ada bahasa yang lebih baik di luar sana.

Jörg W Mittag
sumber
Sintaks XML memang mungkin terlihat verbose. Tetapi, apa saja bahasa lain yang didukung di mana-mana?
George Sovetov
XSLT adalah bahasa fungsional IMO yang sangat baik. Di mana ia jatuh adalah cara menggabungkan pandangan dengan transformasi logika.
RubberDuck
4
@ GeorgeSoverov mengapa penting untuk didukung di mana saja? Itu hanya perlu didukung di server Anda.
Esben Skov Pedersen
1
Saya pikir keburukan bahasa tidak relevan jika melayani kasus penggunaan yang relevan. Saksikan saja keberhasilan JavaScript. Masalah dengan XSLT adalah use case tidak ada.
JacquesB
1
Nah, Anda tentu menunjukkan bahwa itu adalah pertanyaan yang menarik jawaban berdasarkan opini ...
Michael Kay
0

Karena XML itu sendiri terlihat seperti junk back-compatability yang usang untuk 99.9% kasus.

Satu-satunya use case di mana XML tidak memiliki penggantian yang unggul langsung adalah hal-hal seperti docx atau odf, dan mungkin SGML akan menjadi lebih baik *. Artinya, kami memiliki struktur dokumen yang sangat kaya dengan segala macam hal yang bersarang di dalamnya satu sama lain dengan transformasi besar yang diterapkan sehingga dapat terlihat benar di layar dan printer.

Hampir setiap saat, XML digunakan untuk melewatkan data terstruktur, dan tampaknya XSLT dirancang untuk mengubah data dokumen terstruktur menjadi data dokumen. Kasus penggunaan itu sedang sekarat. JSON secara langsung lebih unggul dari XML untuk data terstruktur. ** Kedua penurunan harga dan YAML lebih unggul pada data yang diformat dengan ringan. Leg-up awal XML adalah parser bawaan di Jawa dan Javacript. JSON memecahkan penghalang itu dengan memanfaatkan pengurai bawaan untuk kasus-kasus di mana sumber JSON dipercaya (yang sebagian besar dari mereka ketika masih muda).

Dan dunia berubah. Keuntungan pustaka bawaan adalah keunggulan sepele sekarang. XHTML ditolak mentah-mentah dan penggantinya tidak mewarisinya, melainkan dari pendahulunya.

XML sekarang digunakan untuk berbicara langsung dengan orang yang ingin menerimanya, dan itu dihasilkan dalam seluruh kain dalam format yang diinginkan, atau sebaliknya itu dibaca dan diuraikan ke objek model langsung dari formulir yang dikirim. Karena itu bukan lagi sebuah format penyimpanan atau format pertukaran universal, mengubahnya dari skema ke skema tidak lagi diperlukan.

* Mereka mengajar di perguruan tinggi bahwa SGML tidak pernah diterapkan. Mereka berbohong.

** Saya pernah mendengar keluhan tentang format angka buruk di JSON. Di sisi lain XML tidak memiliki format angka sehingga hanya memasukkan semua tipe data dalam string masih menang melawan XML.

Joshua
sumber