Adakah alasan bagus untuk menggunakan, mempelajari, atau merekomendasikan XSLT? [Tutup]

28

Saya seorang pengembang selama 8 tahun terakhir. Kami menggunakan XSLT terutama untuk mengubah XML menjadi HTML. Kami juga menggunakannya untuk transformasi XML ke XML.

Tapi kami punya pengganti untuk semuanya sekarang. HTML dapat dibuat dengan nyaman melalui bahasa pemrograman seperti ASP.Net. XML dapat dibaca dan dimanupulasi dalam bahasa standar tingkat tinggi apa pun. Karena pemrograman dalam XSLT sedikit rumit, siapa pun lebih suka mengerjakan bahasa pemrograman terbaru.

Sekarang pertanyaan saya: Apakah XSLT akan menjadi pilihan yang signifikan di masa depan, tidak mempertimbangkan fakta mempertahankan XSLT yang sudah dikembangkan? Dapatkah saya merekomendasikan pemrogram baru untuk mempelajari XSLT?

SaravananArumugam
sumber
3
Bacaan Relavent: dangerous.cat-v.org/software/xml
Josh K
12
Bagi saya, XSLT adalah bahasa pemrograman yang sangat samar dan menyangkal menjadi bahasa pemrograman. Ini terkait dengan bahasa pemrograman fungsional murni, tetapi dibuat jauh lebih mudah dibaca, lebih sedikit dipelihara, jauh lebih tidak praktis. Karena ini adalah bahasa pemrograman yang disangkal, PENGGUNA misalnya DocBook (perangkat lunak kompleks yang ditulis dalam bahasa XSLT) memiliki masalah dalam mengintegrasikan berbagai penterjemah, catur, perpustakaan dll. Untuk membuat <sumpah serapah dihapus> bekerja.
Steve314
8
Bukankah maksud Anda <expletive deleted="true" />?
MSalters
6
@ Steve314 Saya suka XSLT, Anda dapat melakukan hal-hal menyenangkan seperti SQL dinamis -> XML dinamis -> XSLT dinamis -> html dinamis + JavaScript: P
Darknight
5
@MSalters - Anda telah melewatkan deklarasi xml, elemen root, ruang nama, DTD, baik skema XML Schema atau skema Relax NG (atau keduanya), ekspresi XMLPath yang menyatakan dari mana sumpah serapah dihapus dari, .. .
Steve314

Jawaban:

29

Ada beberapa kasus penting di mana XSLT bisa menjadi pilihan yang baik:

  • Perangkat lunak ETL ( Extract, Transform, Load ) dalam beberapa kasus dapat menggunakan XSLT. Misalnya, ini bisa menjadi pilihan yang baik ketika data yang diekstraksi dan data yang dimuat adalah dalam format XML, dan di mana transformasi dapat diubah tanpa perlu mengkompilasi ulang aplikasi.

  • Beberapa aplikasi yang menyimpan data dalam XML menggunakan XSLT untuk menyajikan data ini dalam format yang dapat dibaca manusia¹. Misalnya, Windows Live Messenger menyimpan jejak pesan sebagai XML, tetapi ketika Anda membuka riwayat di WLM itu sendiri, itu menunjukkan kepada Anda tabel cantik yang sebenarnya adalah HTML yang dibangun melalui XSLT.

  • Beberapa situs web yang berorientasi pada pengembang atau yang berorientasi pada data mungkin ingin memberikan akses ke XML jika tujuannya adalah untuk menggunakan halaman situs web tersebut secara terprogram ². Entah bagaimana itu lebih baik daripada menggunakan parser HTML, terutama karena kode HTML dapat diubah setiap saat.

  • XSLT, ketika digunakan di situs web, memungkinkan pemisahan ketat antara HTML dan kode-belakang, yang memungkinkan untuk mempekerjakan pengembang untuk kode-belakang dan pengembang lain untuk hal-hal HTML / CSS. Lihat poin 1 dalam jawaban saya untuk pertanyaan lain .

Apakah XSLT akan menjadi pilihan yang signifikan di masa depan? Yah, ini bukan pilihan yang signifikan hari ini, dan saya ragu penggunaan XSLT akan meningkat seiring waktu. Saya mengabaikan alasan itu, tetapi banyak pengembang tidak suka XML dan membenci XSLT.

Bisakah Anda merekomendasikan pemrogram baru untuk mempelajari XSLT? Yakin! Tidak hanya XSLT dapat digunakan dalam beberapa keadaan ketika pendekatan lain akan lebih sulit, tetapi juga XSLT memiliki pendekatan yang sangat spesifik yang tidak dimiliki bahasa lain.


¹ Maksud saya XML tidak bisa dibaca oleh manusia: jika Anda meminta seseorang yang tidak bekerja di IT untuk membaca XML, ia akan ngeri.
² Saya tahu ada layanan web. Tetapi kadang-kadang lebih mudah dan lebih mudah, pada setiap halaman, untuk membangun objek dinamis, lalu membuat serial menjadi XML, lalu, baik mengubahnya menjadi HTML melalui XSLT atau membiarkan bot mengakses XML secara langsung.

Arseni Mourzenko
sumber
Format XML minimal jauh lebih mudah untuk membalikkan rekayasa daripada file biner biasa, tetapi obsesi deskripsi diri itu gila. Jika Anda ingin mendekripsi dokumen XML, pertama strip sebanyak mungkin kekacauan, mulai dengan DTD.
Steve314
3
Untuk pembaca lain: ETL = Ekstrak, transformasikan, muat
Peter Krauss
12

XSLT sudah hampir mati karena hanya beberapa penggemar yang masih menggunakannya. Namun, tidak ada alternatif nyata untuk itu. Jika Anda hanya fokus pada satu kasus penggunaan, seperti misalnya rendering halaman HTML dari dokumen semantik, Anda menemukan alat yang lebih baik. Jika Anda mencari mesin templat pembuatan kode, lagi-lagi ada alat yang lebih baik. Sama untuk transformasi dokumen.

Tetapi jika Anda mencari alat yang mendukung semua kasus penggunaan ini dengan cukup baik di semua platform, maka pilihan menjadi sangat terbatas. Jika Anda sudah memiliki dokumen XML dan harus mengubahnya menjadi sesuatu untuk dapat menggunakan alat Anda, Anda mungkin lebih baik hanya memproses data Anda dengan XSLT (atau XQuery).

Apa pun itu, Anda dapat mempelajari XSLT dalam hitungan hari, mungkin beberapa minggu. Tidak ada salahnya Anda membuat pengalaman langsung. Coba saja. Paling tidak sepadan dengan usaha untuk menyimpan pola semacam ini (transformasi berbasis aturan) di kepala Anda untuk digunakan nanti. Ini saja membenarkan belajar XSLT.

Michael
sumber
8

Hmm saya ingin tahu apakah API tingkat tinggi yang membuat HTML dari kode menggunakan XSLT "di bawah tenda" apa pun ...

XSLT digunakan secara luas di mana saya bekerja untuk mengubah XML dari satu format sumber ke berbagai lainnya. Itu juga dapat digunakan untuk mengubah XML ke output non-XML. Saya belum melakukan banyak hal ini, tetapi saya pernah mendengar tentang hal itu dilakukan untuk menargetkan PDF dan PostScript, antara lain.

FrustratedWithFormsDesigner
sumber
3
Itu adalah XSL / FO, yang merupakan kembar siam XSL / T. Mereka dipisahkan sejak lahir.
8

Iya nih.

Mari kita ambil contoh yang bagus: laporan uji unit dalam integrasi berkelanjutan. Sebagian besar unit pengujian dan program cakupan kode hanya menghasilkan banyak XML yang tidak dapat dibaca. Tetapi dengan beberapa XSLT sederhana, Anda dapat membuat selusin laporan yang bermanfaat dari data yang sama. Dan orang lain dapat menggunakan kembali laporan itu.

Sekarang Anda bisa menulis ini dalam bahasa apa pun yang digunakan alat CI untuk plugin, tetapi jika Anda tidak tahu bahasa itu (katakanlah, Anda adalah pengembang .NET, menggunakan Jenkins) maka tidak perlu mempelajarinya. Cukup gunakan plugin yang sudah menerapkan XSLT ke file XML dan tulis beberapa XSLT yang bermanfaat.

pdr
sumber
6

Akan selalu ada pilihan dan variasi dalam bahasa pemrograman, dan alasan mengapa seseorang dipilih dalam preferensi terhadap yang lain adalah banyak berkaitan dengan keakraban dan mode seperti dengan kriteria obyektif seperti fungsi, produktivitas, dan kinerja. Tidak ada yang bisa memprediksi mode, jadi tidak ada yang bisa memprediksi tren masa depan dalam bahasa pemrograman. Tetapi ada banyak orang yang telah melewati hambatan pembelajaran awal untuk XSLT dan menemukan bahwa itu adalah alat yang sangat produktif untuk berbagai tugas yang sangat luas (mungkin beragam yang lebih luas daripada yang pernah dirancang untuk ditangani).

Untuk banyak tugas yang saya lihat XSLT digunakan untuk (dan tugas yang saya gunakan untuk diri saya sendiri), menulis kode Java atau ASP untuk melakukan pekerjaan itu akan menjadi pemborosan yang mengerikan dari anggaran perusahaan Anda. Tapi mungkin tidak, jika Anda pandai menulis Java dan buruk dalam menulis XSLT.

Michael Kay
sumber
6

XSLT tidak dapat dibaca manusia. Informasi-meta (tag) mengambil tempat terlalu banyak di atas informasi sebenarnya (teks, permintaan xpath). Kode yang baik harus terlihat seperti dokumentasi dan ini bukan kasus XSLT. Ini adalah format kegigihan yang bagus untuk alat pemetaan.

Bahasa transformasi yang baik harus memungkinkan untuk melihat pratinjau hasil transformasi dan melihat aliran transformasi (IF, ELSE, FOR, WHILE) secara bersamaan. ini penting untuk perawatan. Mengenai aspek ini, Velocity atau GenearateXY lebih baik daripada XSLT. GenerateXY bahkan sedikit lebih baik karena memisahkan pratinjau dan aliran sementara dengan Velocity Anda sayangnya harus mematahkan lekukan pratinjau untuk memberikan aliran yang dapat dibaca.

Satu-satunya poin yang baik di XSLT adalah bahwa ia peduli tentang modularitas dengan menggunakan dan bahkan menyalahgunakan elemen "xsl: template". Masalah dengan ini adalah bahwa itu baik untuk bahasa pemrosesan data (Java, C, ...) tetapi sangat sekunder untuk bahasa presentasi.

abraham
sumber
4

Memang

Sesuatu mungkin akan menggantikan XSLT suatu hari karena itu agak rumit untuk dipelajari dan digunakan. Namun, saat ini tidak ada bahasa template / transformasi yang tersedia afaik yang fleksibel dan "murni" dalam implementasinya.

XSL-T dapat digunakan untuk beberapa tujuan berbeda:

  • Anda dapat "membuat" konten dalam format HTML misalnya dari data menggunakan templat
  • Anda dapat mengonversi dari satu format xml ke format lain
  • Anda dapat memanipulasi xml ke format lain, mungkin memperlihatkan subset

Namun pada dasarnya semua ini adalah hal yang sama, transformasi dari satu file data XML ke yang lain. Sekarang mari kita lihat beberapa alat berbeda yang bisa kita gunakan sebagai ganti XSLT.

Jika kita ingin memanipulasi konten katakanlah halaman XHTML kita bisa menggunakan regexp, tetapi regexp berantakan untuk hal-hal struktural. Itu bersinar untuk memanipulasi string tetapi saya tidak akan menggunakannya untuk membuat daftar isi untuk sesuatu atau menyajikannya dalam tata letak yang berbeda.

Berikutnya adalah ASP.Net. Kami menempatkan tata letak kami di halaman asp kami dan memasukkan beberapa kode di belakang untuk bagian dinamis. Alternatif lain adalah untuk kehilangan bagian tata letak dan menghasilkan segala sesuatu dari katakanlah database dan menggunakan C # menciptakan output yang diinginkan.

Masalah dengan pendekatan pertama adalah kikuk untuk beralih dari data deskriptif ke konten aktual. Jika Anda memiliki beberapa file data yang berisi nomor telepon yang ingin Anda sajikan dengan tajuk untuk setiap huruf, perlihatkan total nr entri, dll. Anda harus memiliki beberapa tata letak dalam file tata letak dan beberapa dalam kode yang Anda hasilkan . Pilihan lain adalah menggunakan beberapa bentuk kisi-kisi web. Saya menganggapnya cukup berantakan dan tiba-tiba Anda harus mempelajari cara kisi-kisi frigging bekerja ketika semua yang ingin Anda lakukan adalah meng-output beberapa html spesifik yang diberikan data.

Menjadi sangat dinamis tentu saja merupakan pilihan, tetapi itu juga agak canggung. Bahkan dalam kasus terbaik di mana Anda menggunakan sesuatu seperti LINQ Anda harus mencampurkan kode pemrograman dengan output dengan cara yang agak jelek. Juga tidak ada cara yang baik untuk menangani dengan benar konten gaya dokumen rekursif tidak terstruktur yang biasanya html.

Dengan XSLT, Anda cukup membuat templat untuk tag tertentu, baik seperti apa adanya atau dalam konteks induknya sehingga dirender berbeda jika misalnya dipasangkan oleh sesuatu yang lain.

Jawaban bertele-tele yang agak panjang tapi ya, saya pikir ada nilai besar dalam bahasa templat deskriptif dan XSLT adalah yang terbaik dan paling terstandarisasi yang kami dapatkan sejauh ini.

Homde
sumber
4

Kegagalan terbesar XSLT adalah ketidakmampuan (dalam implementasi nyata apa pun) untuk meminimalkan jumlah dokumen yang perlu disimpan dalam memori pada saat yang sama untuk pemrosesan yang efisien. Sebaliknya seluruh dokumen dibaca ke dalam beberapa bentuk representasi DOM dan pemrosesan dilakukan terhadap hal itu. Jika dokumen sangat besar, maka persyaratan memori juga demikian. Namun banyak stylesheet jelas hanya membutuhkan tag saat ini dan beberapa lainnya, misalnya leluhur tag, pada waktu tertentu dan dengan demikian dapat diproses dengan memori minimal dan streaming yang efisien.

Ya, dari segi bahasa itu aneh, tapi itu hanya penghalang untuk masuk. Jika Anda mengenal XSLT, seringkali lebih mudah daripada alternatifnya - tetapi jika Anda akan memiliki dokumen besar (atau banyak dokumen yang diproses sekaligus) dampak memori dari XSLT sering kali memaksa alternatif lain yang lebih memakan waktu.

Jess Holle
sumber
3

Sebenarnya, saya pikir lebih efisien menggunakan XSL daripada bahasa lain untuk menyajikan data. Misalnya Anda dapat menyajikan XML sebagai PDF menggunakan XSL-FO dan Anda dapat mengontrol setiap inci, tetapi jika Anda bekerja dengan RDLC (.NET) misalnya, Anda akan melihat bahwa sangat sulit untuk menyajikan apa yang Anda inginkan.

Bahkan evolusi / koreksi cukup mudah, karena di XSL setiap elemen memiliki template sendiri. Saya pikir ekstensi XSL lebih penting seperti XSLT dan XSL-FO. Itu sebabnya bahasa ini masih akan digunakan di masa depan (tapi saya sangat berharap itu akan menjadi lebih stabil dan kurang kompleks).

Yayaman
sumber
2

Saya bekerja untuk perusahaan Integrasi Data dan kami menggunakan XSLT dengan alat milik kami sebagai solusi hebat yang melibatkan XML ke HTML / XML / Ascii.

Bryan Harrington
sumber