Beberapa waktu yang lalu, saya memulai sebuah proyek di mana saya merancang skema XML html-esque sehingga penulis dapat menulis konten mereka (materi kursus pendidikan) dalam format yang disederhanakan yang kemudian akan diubah menjadi HTML melalui XSLT. Saya bermain-main (berjuang) dengannya untuk beberapa saat dan membawanya ke tingkat yang sangat dasar tetapi kemudian terlalu terganggu oleh keterbatasan yang saya hadapi (yang mungkin merupakan keterbatasan pengetahuan saya) dan ketika saya membaca blog yang menyarankan untuk membuang XSLT dan tulis saja XML-to-parser Anda sendiri dalam bahasa pilihan Anda, saya dengan bersemangat melompat ke sana dan berhasil dengan sangat baik.
Saya masih mengerjakannya sampai hari ini ( saya seharusnya sedang mengerjakannya sekarang, daripada bermain di SO ), dan saya melihat semakin banyak hal yang membuat saya berpikir bahwa keputusan untuk membuang XSLT adalah salah satu yang baik.
Saya tahu bahwa XSLT ada tempatnya, karena itu adalah standar yang diterima, dan jika setiap orang menulis penerjemah mereka sendiri, 90% dari mereka akan berakhir di TheDailyWTF . Tetapi mengingat bahwa ini adalah bahasa gaya fungsional daripada gaya prosedural yang sebagian besar pemrogram kenal, bagi seseorang yang memulai proyek seperti milik saya, apakah Anda akan merekomendasikan mereka untuk mengikuti jalur yang saya lakukan, atau bertahan dengan XSLT ?
Jawaban:
Keuntungan XSLT:
Kekurangan XSLT:
Salah satu cara untuk mendapatkan perilaku prosedural, dengan cara, adalah dengan merangkai banyak transformasi bersama. Setelah setiap langkah, Anda memiliki DOM baru untuk dikerjakan yang mencerminkan perubahan pada langkah itu. Beberapa prosesor XSL memiliki ekstensi untuk melakukan ini secara efektif dalam satu transformasi, tetapi saya lupa detailnya.
Jadi, jika kode Anda sebagian besar adalah keluaran dan tidak banyak logika, XSLT bisa menjadi cara yang sangat rapi untuk mengekspresikannya. Jika ada banyak logika, tetapi sebagian besar bentuk yang dibangun ke XSLT (pilih semua elemen yang terlihat seperti bla, dan untuk masing-masing keluaran bla), itu mungkin lingkungan yang cukup ramah. Jika Anda suka berpikir XML-ishly setiap saat, cobalah XSLT 2.
Jika tidak, saya akan mengatakan bahwa jika bahasa pemrograman favorit Anda memiliki implementasi DOM yang baik yang mendukung XPath dan memungkinkan Anda membuat dokumen dengan cara yang berguna, maka ada beberapa manfaat menggunakan XSLT. Pengikatan ke libxml2 dan gdome2 seharusnya berfungsi dengan baik, dan tidak ada salahnya menggunakan bahasa tujuan umum yang Anda kuasai dengan baik.
Pengurai XML yang dikembangkan sendiri biasanya tidak lengkap (dalam hal ini Anda akan lepas landas suatu hari nanti) atau tidak jauh lebih kecil dari sesuatu yang Anda bisa dapatkan dari rak (dalam hal ini Anda mungkin membuang-buang waktu Anda), dan berikan Anda memiliki sejumlah peluang untuk menimbulkan masalah keamanan yang parah di sekitar masukan yang berbahaya. Jangan menulisnya kecuali Anda tahu persis apa yang Anda peroleh dengan melakukannya. Bukan berarti Anda tidak dapat menulis parser untuk sesuatu yang lebih sederhana daripada XML sebagai format input Anda, jika Anda tidak membutuhkan semua yang ditawarkan XML.
sumber
Begitu banyak hal negatif!
Saya telah menggunakan XSLT selama beberapa tahun, dan sangat menyukainya. Hal utama yang harus Anda sadari adalah bahwa ini bukanlah bahasa pemrograman, melainkan bahasa templating (dan dalam hal ini saya merasa lebih unggul dari asp.net / spit).
XML adalah format data de facto pengembangan web saat ini, baik itu file konfigurasi, data mentah, atau dalam representasi memori. XSLT dan XPath memberi Anda cara yang sangat kuat dan sangat efisien untuk mengubah data itu menjadi format keluaran apa pun yang mungkin Anda suka, langsung memberi Anda aspek MVC untuk memisahkan presentasi dari data.
Lalu ada kemampuan utilitas: menghapus namespace, mengenali definisi skema yang berbeda, menggabungkan dokumen.
Ini harus lebih baik untuk menangani XSLT daripada mengembangkan sendiri metode dalam rumah Anda. Setidaknya XSLT adalah standar dan sesuatu yang dapat Anda sewa, dan jika itu benar-benar menjadi masalah bagi tim Anda, sifatnya memungkinkan Anda membuat sebagian besar tim Anda bekerja hanya dengan XML.
Kasus penggunaan dunia nyata: Saya baru saja menulis aplikasi yang menangani dokumen XML dalam memori di seluruh sistem, dan mengubahnya menjadi JSON, HTML, atau XML seperti yang diminta oleh pengguna akhir. Saya memiliki permintaan yang cukup acak untuk diberikan sebagai data Excel. Seorang mantan kolega telah melakukan sesuatu yang serupa secara programatik tetapi membutuhkan modul dari beberapa file kelas dan server telah menginstal MS Office! Ternyata Excel memiliki XSD: fungsionalitas baru dengan dampak kode dasar minimum dalam 3 jam.
Secara pribadi saya pikir itu adalah salah satu hal terbersih yang pernah saya temui dalam karir saya, dan saya percaya semua masalah yang jelas itu (debugging, manipulasi string, struktur pemrograman) turun ke pemahaman yang salah tentang alat tersebut.
Jelas, saya sangat percaya itu "sepadan".
sumber
Saya harus mengakui bias di sini karena saya mengajar XSLT sebagai mata pencaharian. Tapi, mungkin ada gunanya meliput area tempat saya melihat siswa saya bekerja. Mereka umumnya dibagi menjadi tiga kelompok: penerbitan, perbankan, dan web.
Banyak dari jawaban sejauh ini dapat diringkas sebagai "tidak baik untuk membuat situs web" atau "tidak seperti bahasa X". Banyak orang teknologi menjalani karir mereka tanpa terpapar bahasa fungsional / deklaratif. Ketika saya mengajar, orang-orang Java / VB / C / etc yang berpengalaman adalah orang-orang yang memiliki masalah dengan bahasa (variabel adalah variabel dalam arti aljabar, bukan pemrograman prosedural misalnya). Itu banyak dari orang-orang yang menjawab di sini - Saya tidak pernah mengerti Java tetapi saya tidak akan repot-repot mengkritik bahasa karena itu.
Dalam banyak keadaan, ini adalah alat yang tidak tepat untuk membuat situs web - bahasa pemrograman tujuan umum mungkin lebih baik. Saya sering kali perlu mengambil dokumen XML yang sangat besar dan mempresentasikannya di web; XSLT membuatnya sepele. Siswa yang saya lihat di ruang ini cenderung memproses kumpulan data dan menampilkannya di web. XSLT tentunya bukan satu-satunya alat yang dapat diterapkan di ruang ini. Namun, banyak dari mereka menggunakan DOM untuk melakukan ini dan XSLT tentu tidak terlalu menyakitkan.
Mahasiswa perbankan yang saya lihat menggunakan kotak DataPower secara umum. Ini adalah alat XML dan digunakan untuk duduk di antara layanan 'berbicara' dengan dialek XML yang berbeda. Transformasi dari satu bahasa XML ke bahasa lain hampir sepele di XSLT dan jumlah siswa yang menghadiri kursus saya tentang ini meningkat.
Kelompok siswa terakhir yang saya lihat berasal dari latar belakang penerbitan (seperti saya). Orang-orang ini cenderung memiliki dokumen XML yang sangat besar (percayalah, penerbitan sebagai industri semakin menjadi XML - penerbitan teknis telah ada selama bertahun-tahun dan penerbitan perdagangan semakin ke sana sekarang). Dokumen-dokumen ini perlu diproses (DocBook ke ePub muncul dalam pikiran di sini).
Seseorang di atas berkomentar bahwa skrip cenderung di bawah 60 baris atau menjadi berat. Jika itu menjadi sulit, kemungkinan besar pembuat kode belum benar-benar mengerti - XSLT adalah pola pikir yang sangat berbeda dari banyak bahasa lain. Jika Anda tidak mendapatkan pola pikir itu tidak akan berhasil.
Ini jelas bukan bahasa yang sekarat (jumlah pekerjaan yang saya dapatkan memberi tahu saya hal itu). Saat ini, agak 'macet' sampai Microsoft menyelesaikan (sangat terlambat) implementasi XSLT 2. Tapi itu masih ada dan tampaknya menjadi kuat dari sudut pandang saya.
sumber
Kami menggunakan XSLT secara ekstensif untuk hal-hal seperti dokumentasi, dan membuat beberapa pengaturan konfigurasi yang kompleks dapat diservis pengguna.
Untuk dokumentasi, kami menggunakan banyak DocBook, yang merupakan format berbasis XML. Ini memungkinkan kami menyimpan dan mengelola dokumentasi kami dengan semua kode sumber kami, karena file tersebut adalah teks biasa. Dengan XSLT, kita dapat dengan mudah membuat format dokumentasi kita sendiri, memungkinkan kita untuk membuat konten secara otomatis dengan cara yang umum, dan membuat konten lebih mudah dibaca. Misalnya, saat kita menerbitkan catatan rilis, kita bisa membuat XML yang terlihat seperti:
Dan kemudian menggunakan XSLT (yang mengubah yang di atas menjadi DocBook) kami berakhir dengan catatan rilis yang bagus (biasanya PDF atau HTML) di mana ID bug secara otomatis ditautkan ke pelacak bug kami, bug dikelompokkan berdasarkan komponen, dan format semuanya konsisten sempurna . Dan XML di atas dapat dibuat secara otomatis dengan menanyakan pelacak bug kami tentang apa yang telah berubah antar versi.
Tempat lain di mana kami menemukan XSLT berguna sebenarnya di produk inti kami. Terkadang saat berinteraksi dengan sistem pihak ketiga, kita perlu memproses data di halaman HTML yang kompleks. Parsing HTML itu jelek, jadi kami memasukkan data melalui sesuatu seperti TagSoup(yang menghasilkan peristiwa SAX XML yang tepat, pada dasarnya memungkinkan kita menangani HTML seolah-olah XML ditulis dengan benar) dan kemudian kita dapat menjalankan beberapa XSLT terhadapnya, untuk mengubah data menjadi format "stabil yang diketahui" yang benar-benar dapat kita gunakan . Dengan memisahkan transformasi itu menjadi file XSLT, itu berarti jika dan ketika format HTML berubah, aplikasinya sendiri tidak perlu ditingkatkan, sebagai gantinya pengguna akhir dapat mengedit file XSLT itu sendiri, atau kita dapat mengirim email mereka adalah file XSLT yang diperbarui tanpa seluruh sistem perlu ditingkatkan.
Saya akan mengatakan bahwa untuk proyek web, ada cara yang lebih baik untuk menangani sisi tampilan daripada XSLT hari ini, tetapi sebagai teknologi pasti ada kegunaan untuk XSLT. Ini bukan bahasa termudah di dunia untuk digunakan, tapi pasti belum mati, dan dari sudut pandang saya masih memiliki banyak kegunaan yang baik.
sumber
XSLT adalah contoh bahasa pemrograman deklaratif .
Contoh lain dari bahasa pemrograman deklaratif termasuk ekspresi reguler, Prolog, dan SQL. Semua ini sangat ekspresif dan kompak, dan biasanya dirancang dengan sangat baik dan kuat untuk tugas yang dirancangnya.
Namun, pengembang perangkat lunak umumnya membenci bahasa semacam itu, karena sangat berbeda dari OO arus utama atau bahasa prosedural sehingga sulit dipelajari dan di-debug. Sifat kompaknya umumnya membuatnya sangat mudah untuk melakukan banyak kerusakan secara tidak sengaja.
Jadi, meskipun XSLT adalah mekanisme yang efisien untuk menggabungkan data menjadi presentasi, XSLT gagal di departemen kemudahan penggunaan. Saya percaya itu sebabnya hal itu belum begitu populer.
sumber
Saya ingat semua hype di sekitar XSLT ketika standar baru dirilis. Semua kegembiraan karena dapat membangun seluruh UI HTML dengan transformasi 'sederhana'.
Mari kita hadapi itu, sulit untuk digunakan, hampir tidak mungkin untuk melakukan debug, seringkali sangat lambat. Hasil akhirnya hampir selalu unik dan kurang ideal.
Saya akan lebih cepat menggerogoti kaki saya sendiri daripada menggunakan XSLT sementara ada cara yang lebih baik untuk melakukan sesuatu. Masih ada tempatnya, bagus untuk tugas transformasi sederhana.
sumber
Saya telah menggunakan XSLT (dan juga XQuery) secara ekstensif untuk berbagai hal - untuk menghasilkan kode C ++ sebagai bagian dari proses pembuatan, untuk menghasilkan dokumentasi dari komentar dokumen, dan dalam aplikasi yang harus bekerja dengan XML secara umum dan XHTML pada khususnya banyak. . Pembuat kode khususnya lebih dari 10.000 baris kode XSLT 2.0 yang tersebar di sekitar selusin file terpisah (itu melakukan banyak hal - header untuk klien, proxy / stub jarak jauh, pembungkus COM, pembungkus NET, ORM - untuk memberi nama Beberapa). Saya mewarisinya dari pria lain yang tidak benar-benar memahami bahasanya dengan baik, dan akibatnya bagian yang lebih tua cukup berantakan. Namun, hal-hal baru yang kami tulis sebagian besar tetap waras dan mudah dibaca, dan saya tidak ingat ada masalah khusus dalam mencapainya. Itu pasti tidak lebih sulit daripada melakukannya untuk C ++.
Berbicara tentang versi, berurusan dengan XSLT 2.0 pasti membantu Anda tetap waras, tetapi 1.0 masih baik-baik saja untuk transformasi yang lebih sederhana. Di ceruknya, ini adalah alat yang sangat berguna, dan produktivitas yang Anda dapatkan dari fitur khusus domain tertentu (yang paling penting, pengiriman dinamis melalui pencocokan template) sulit untuk dicocokkan. Meskipun kata-kata yang dirasakan dari sintaks berbasis XML XSLT, hal yang sama di LINQ ke XML (bahkan di VB dengan literal XML) biasanya beberapa kali lebih lama. Cukup sering, bagaimanapun, itu mendapat kesalahan yang tidak perlu karena penggunaan XML yang tidak perlu dalam beberapa kasus di tempat pertama.
Singkatnya: ini adalah alat yang sangat berguna untuk dimiliki di kotak peralatan seseorang, tetapi ini adalah alat yang sangat khusus, jadi itu baik selama Anda menggunakannya dengan benar dan untuk tujuan yang dimaksudkan. Saya benar-benar berharap ada implementasi .NET asli yang tepat dari XSLT 2.0.
sumber
Saya menggunakan XSLT (karena kurangnya alternatif yang lebih baik), tetapi tidak untuk presentasi, hanya untuk transformasi:
Saya menulis transformasi XSLT singkat untuk melakukan pengeditan massal pada file maven pom.xml kami.
Saya telah menulis alur transformasi untuk menghasilkan Skema XML dari XMI (Diagram UML). Ini berhasil untuk sementara waktu, tetapi akhirnya menjadi terlalu rumit dan kami harus mengeluarkannya di belakang gudang.
Saya telah menggunakan transformasi untuk merefaktor XML Schemas.
Saya telah mengatasi beberapa batasan di XSLT dengan menggunakannya untuk menghasilkan XSLT untuk melakukan pekerjaan yang sebenarnya. (Pernah mencoba menulis XSLT yang menghasilkan keluaran menggunakan ruang nama yang tidak diketahui hingga runtime?)
Saya terus kembali ke sana karena ia melakukan pekerjaan yang lebih baik dalam memproses XML yang diprosesnya daripada pendekatan lain yang telah saya coba, yang tampaknya tidak perlu merugikan atau hanya salah memahami XML. XSLT tidak menyenangkan, tetapi menurut saya penggunaan Oksigen membuatnya dapat ditahan.
Karena itu, saya sedang menyelidiki menggunakan Clojure (cadel) untuk melakukan transformasi XML, tetapi saya belum cukup jauh untuk mengetahui apakah pendekatan itu akan memberi saya manfaat.
sumber
Secara pribadi saya menggunakan XSLT dalam konteks yang sama sekali berbeda. Game komputer yang saya kerjakan saat itu menggunakan banyak sekali halaman UI yang didefinisikan menggunakan XML. Selama pemfaktoran ulang besar tidak lama setelah rilis, kami ingin mengubah struktur dokumen XML ini. Kami membuat format masukan permainan mengikuti struktur yang jauh lebih baik dan sadar skema.
XSLT sepertinya pilihan sempurna untuk terjemahan ini dari format lama -> Format baru. Dalam dua minggu saya memiliki konversi yang berfungsi dari lama ke baru untuk ratusan halaman kami. Saya juga dapat menggunakannya untuk mengekstrak banyak informasi tentang tata letak halaman UI kami. Saya membuat daftar komponen mana yang disematkan yang relatif mudah yang kemudian saya gunakan XSLT untuk menulis ke dalam definisi skema kami.
Juga, berasal dari latar belakang C ++, itu adalah bahasa yang sangat menyenangkan dan menarik untuk dikuasai.
Menurut saya, sebagai alat untuk menerjemahkan XML dari satu format ke format lain, ini luar biasa. Namun, ini bukan satu-satunya cara untuk mendefinisikan algoritme yang menggunakan XML sebagai input dan output Sesuatu . Jika algoritme Anda cukup kompleks, fakta bahwa inputnya adalah XML menjadi tidak relevan dengan pilihan alat Anda - misalnya, gulirkan alat Anda sendiri dalam C ++ / Python / apa saja.
Khusus untuk contoh Anda, saya membayangkan ide terbaik adalah membuat konversi XML-> XML Anda sendiri yang mengikuti logika bisnis Anda. Selanjutnya, tulis penerjemah XSLT yang hanya tahu tentang pemformatan dan tidak melakukan apa pun yang pintar. Itu mungkin jalan tengah yang bagus tetapi itu sepenuhnya tergantung pada apa yang Anda lakukan. Memiliki penerjemah XSLT pada keluaran membuatnya lebih mudah untuk membuat format keluaran alternatif - dapat dicetak, untuk seluler, dll.
sumber
Ya, saya sering menggunakannya. Dengan menggunakan file xslt yang berbeda, saya dapat menggunakan sumber XML yang sama untuk membuat beberapa file HTML poliglot (X) (menyajikan data yang sama dengan cara yang berbeda), umpan RSS, umpan Atom, file deskriptor RDF, dan fragmen peta situs .
Ini bukan obat mujarab. Ada hal-hal yang dilakukannya dengan baik, dan hal-hal yang tidak berhasil dengan baik, dan seperti semua aspek pemrograman lainnya, ini semua tentang penggunaan alat yang tepat untuk pekerjaan yang tepat. Ini adalah alat yang sangat berharga di kotak peralatan Anda, tetapi harus digunakan hanya jika diperlukan.
sumber
Saya pasti akan merekomendasikan untuk bertahan. Terutama jika Anda menggunakan studio visual yang memiliki alat pengeditan, tampilan, dan debugging bawaan untuk XSLT.
Ya, memang menyakitkan saat Anda belajar, tetapi sebagian besar rasa sakit itu berkaitan dengan keakraban. Rasa sakitnya berkurang saat Anda mempelajari bahasanya.
W3schools memiliki dua artikel yang sangat berharga: http://www.w3schools.com/xpath/xpath_functions.asp http://www.w3schools.com/xsl/xsl_functions.asp
sumber
Saya merasa XSLT cukup sulit untuk dikerjakan.
Saya memiliki pengalaman mengerjakan sistem yang agak mirip dengan yang Anda gambarkan. Perusahaan saya mencatat bahwa data yang kami kembalikan dari "tingkat menengah" ada dalam XML, dan halaman akan dirender dalam HTML yang mungkin juga XHTML, plus mereka telah mendengar bahwa XSL adalah standar untuk mengubah antara XML format. Jadi "arsitek" (yang saya maksud adalah orang-orang yang memikirkan pemikiran desain yang mendalam tetapi tampaknya tidak pernah membuat kode) memutuskan bahwa tingkat depan kami akan diterapkan dengan menulis skrip XSLT yang mengubah data menjadi XHTML untuk ditampilkan.
Pilihan itu ternyata membawa bencana. XSLT, ternyata, sulit untuk ditulis. Dan semua halaman kami sulit untuk ditulis dan dirawat. Kami akan melakukan jauh lebih baik jika menggunakan JSP (ini di Java) atau beberapa pendekatan serupa yang menggunakan satu jenis markup (tanda kurung sudut) untuk format keluaran (HTML) dan jenis markup lainnya (seperti <% ... %>) untuk meta-data. Hal yang paling membingungkan tentang XSLT adalah bahwa XSLT ditulis dalam XML, dan diterjemahkan dari XML ke XML ... cukup sulit untuk menyimpan semua 3 dokumen XML yang berbeda langsung dalam pikiran.
Situasi Anda sedikit berbeda: alih-alih menulis setiap halaman di XSLT seperti yang saya lakukan, Anda hanya perlu menulis SATU bit kode di XSLT (kode untuk diubah dari templat ke tampilan). Tapi kedengarannya Anda mungkin mengalami kesulitan yang sama dengan yang saya alami. Saya akan mengatakan bahwa mencoba menafsirkan DSL berbasis XML sederhana (bahasa khusus domain) seperti yang Anda lakukan BUKAN salah satu poin kuat XSLT. (Meskipun BISA melakukan pekerjaan itu ... bagaimanapun juga, itu Turing selesai!)
Namun, jika apa yang Anda miliki lebih sederhana: Anda memiliki data dalam satu format XML dan ingin membuat perubahan sederhana padanya - bukan DSL deskripsi halaman penuh, tetapi beberapa modifikasi langsung yang sederhana, maka XSLT adalah alat yang sangat baik untuk tujuan itu. Sifat deklaratif (bukan prosedural) sebenarnya merupakan keuntungan untuk tujuan itu.
- Michael Chermside
sumber
XSLT sulit untuk dikerjakan, tetapi setelah Anda menaklukkannya, Anda akan memiliki pemahaman yang sangat menyeluruh tentang DOM dan skema. Jika Anda juga XPath, maka Anda sedang dalam perjalanan untuk mempelajari pemrograman fungsional dan ini akan memaparkan teknik dan cara baru untuk memecahkan masalah. Dalam beberapa kasus, transformasi yang berurutan lebih kuat daripada solusi prosedural.
sumber
Saya menggunakan XSLT secara ekstensif, untuk front-end gaya MVC kustom. Model ini "diserialkan" ke xml (bukan melalui xml serializaiton), lalu diubah menjadi html melalui xslt. Keuntungan dari ASP.NET terletak pada integrasi alami dengan XPath, dan persyaratan bentuk yang lebih ketat (jauh lebih mudah untuk bernalar tentang struktur dokumen di xslt daripada di kebanyakan bahasa lain).
Sayangnya, bahasa tersebut mengandung beberapa batasan (misalnya, kemampuan untuk mengubah keluaran dari transformasi lain) yang berarti terkadang membuat frustasi untuk dikerjakan.
Namun demikian, pemisahan masalah yang mudah dicapai dan ditegakkan dengan kuat yang diberikannya bukanlah sesuatu yang saya lihat disediakan oleh teknologi lain saat ini - jadi untuk transformasi dokumen, itu masih sesuatu yang saya rekomendasikan.
sumber
Saya menggunakan XML, XSD dan XSLT pada proyek integrasi antara sistem DB yang sangat tidak mirip sekitar tahun 2004. Saya harus belajar XSD dan XSLT dari awal tetapi itu tidak sulit. Hal yang hebat tentang alat ini adalah memungkinkan saya untuk menulis kode C ++ data independen, mengandalkan XSD dan XSLT untuk memvalidasi / memverifikasi dan kemudian mengubah dokumen XML. Ubah format data, ubah dokumen XSD dan XSLT, bukan kode C ++ yang menggunakan pustaka Xerces.
Untuk kepentingan: XSD utama adalah 150KB dan ukuran rata-rata XSLT <5KB IIRC.
Manfaat besar lainnya adalah bahwa XSD adalah dokumen spesifikasi yang menjadi dasar XSLT. Keduanya bekerja secara harmonis. Dan spesifikasi jarang dalam pengembangan perangkat lunak akhir-akhir ini.
Meskipun saya tidak mengalami terlalu banyak kesulitan mempelajari sifat deklaratif XSD dan XSLT, saya menemukan bahwa programmer C / C ++ lain mengalami kesulitan besar dalam menyesuaikan diri dengan cara deklaratif. Ketika mereka melihat itu, ah prosedural mereka bergumam, sekarang aku mengerti! Dan mereka melanjutkan (permainan kata?) Untuk menulis XSLT prosedural! Masalahnya adalah Anda harus mempelajari XPath dan memahami sumbu XML. Mengingatkan saya pada programmer C lama yang menyesuaikan penggunaan OO saat menulis C ++.
Saya menggunakan alat ini karena memungkinkan saya untuk menulis basis kode C ++ kecil yang diisolasi dari semua kecuali modifikasi struktur data yang paling mendasar dan yang terakhir ini adalah perubahan struktur DB. Meskipun saya lebih suka C ++ daripada bahasa lain, saya akan menggunakan apa yang saya anggap berguna untuk mendapatkan keuntungan jangka panjang dari proyek perangkat lunak.
sumber
Saya dulu berpikir XSLT adalah ide yang bagus. Maksud saya adalah ide bagus.
Yang gagal adalah eksekusi.
Masalah yang saya temukan dari waktu ke waktu adalah bahwa bahasa pemrograman dalam XML hanyalah ide yang buruk. Itu membuat semuanya tidak bisa ditembus. Secara khusus saya pikir XSLT sangat sulit dipelajari, dikodekan, dan dipahami. XML di atas aspek fungsional hanya membuat semuanya terlalu membingungkan. Saya telah mencoba mempelajarinya sekitar 5 kali dalam karir saya, dan itu tidak melekat.
Oke, Anda bisa 'memperalatnya' - saya pikir itu sebagian dari inti desainnya - tetapi itu adalah kegagalan kedua: semua alat XSLT di pasaran, cukup sederhana ... omong kosong!
sumber
The spesifikasi XSLT mendefinisikan XSLT sebagai "bahasa untuk mengubah dokumen XML menjadi dokumen XML lainnya". Jika Anda mencoba melakukan apa pun tetapi pemrosesan data paling dasar dalam XSLT mungkin ada solusi yang lebih baik.
Juga perlu diperhatikan bahwa kemampuan pemrosesan data XSLT dapat diperluas di .NET menggunakan fungsi ekstensi kustom:
sumber
Saya mengelola sistem dokumentasi online untuk perusahaan saya. Para penulis membuat dokumentasi dalam SGML (bahasa seperti xml). SGML kemudian digabungkan dengan XSLT dan diubah menjadi HTML.
Ini memungkinkan kami untuk dengan mudah membuat perubahan pada tata letak dokumentasi tanpa melakukan pengkodean apa pun. Ini hanya masalah mengganti XSLT.
Ini bekerja dengan baik untuk kami. Dalam kasus kami, ini adalah dokumen hanya baca. Pengguna tidak berinteraksi dengan dokumentasi.
Selain itu, dengan menggunakan XSLT, Anda bekerja lebih dekat ke domain bermasalah (HTML). Saya selalu menganggap itu sebagai ide yang bagus.
Terakhir, jika sistem Anda saat ini BEKERJA, biarkan saja. Saya tidak akan pernah menyarankan untuk membuang kode Anda yang sudah ada. Jika saya mulai dari awal, saya akan menggunakan XSLT, tetapi dalam kasus Anda, saya akan menggunakan apa yang Anda miliki.
sumber
Itu tergantung pada apa yang Anda butuhkan. Kekuatan utamanya adalah kemudahan perawatan transformasi, dan penulisan parser Anda sendiri biasanya akan menghapusnya. Dengan demikian, terkadang sebuah sistem kecil dan sederhana dan benar-benar tidak membutuhkan solusi yang "mewah". Selama pembuat berbasis kode Anda dapat diganti tanpa harus mengubah kode lain, bukan masalah besar.
Adapun keburukan XSL, ya jelek. Ya, perlu waktu untuk membiasakan diri. Tapi begitu Anda menguasainya (tidak perlu lama-lama IMO), itu sebenarnya lancar. Transformasi yang dikompilasi berjalan cukup cepat menurut pengalaman saya, dan Anda pasti dapat men-debugnya.
sumber
Saya masih percaya bahwa XSLT dapat berguna tetapi ini adalah bahasa yang jelek dan dapat menyebabkan kekacauan yang tidak terbaca dan tidak dapat dirawat. Sebagian karena XML tidak cukup dapat dibaca manusia untuk membuat "bahasa" dan sebagian karena XSLT terjebak di suatu tempat antara deklaratif dan prosedural. Karena itu, dan saya pikir perbandingan dapat dibuat dengan ekspresi reguler, ia memiliki kegunaannya ketika datang ke masalah sederhana yang didefinisikan dengan baik.
Menggunakan pendekatan alternatif dan mem-parsing XML dalam kode bisa sama buruknya dan Anda benar-benar ingin menggunakan semacam teknologi marshalling / binding XML (seperti JiBX di Java) yang akan mengonversi XML Anda langsung ke objek.
sumber
Jika Anda dapat menggunakan XSLT dalam gaya deklaratif (meskipun saya tidak sepenuhnya setuju bahwa ini adalah bahasa deklaratif) maka saya pikir ini berguna dan ekspresif.
Saya telah menulis aplikasi web yang menggunakan bahasa OO (C # dalam kasus saya) untuk menangani lapisan data / pemrosesan, tetapi menghasilkan XML daripada HTML. Ini kemudian dapat digunakan secara langsung oleh klien sebagai API data, atau dirender sebagai HTML oleh XSLT. Karena C # mengeluarkan XML yang secara struktural kompatibel dengan penggunaan ini, semuanya sangat lancar, dan logika presentasi disimpan secara deklaratif. Lebih mudah untuk mengikuti dan mengubah daripada mengirim tag dari C #.
Namun, karena Anda memerlukan lebih banyak logika pemrosesan pada tingkat XSLT, hal itu menjadi berbelit-belit dan bertele-tele - bahkan jika Anda "mendapatkan" gaya fungsional.
Tentu saja, akhir-akhir ini saya mungkin telah menulis aplikasi web tersebut menggunakan antarmuka RESTful - dan menurut saya "bahasa" data seperti JSON mendapatkan daya tarik di area yang XML secara tradisional telah diubah oleh XSLT. Namun untuk saat ini XSLT masih merupakan teknologi yang penting dan berguna.
sumber
Saya telah menghabiskan banyak waktu di XSLT dan menemukan bahwa meskipun ini adalah alat yang berguna dalam beberapa situasi, ini jelas bukan perbaikan semua. Ini bekerja sangat baik untuk tujuan B2B ketika digunakan untuk terjemahan data untuk input / output XML yang dapat dibaca mesin. Saya tidak berpikir Anda berada di jalur yang salah dalam pernyataan Anda tentang batasannya. Salah satu hal yang paling membuat saya frustrasi adalah nuansa dalam implementasi XSLT.
Mungkin Anda harus melihat beberapa bahasa markup lain yang tersedia. Saya yakin Jeff membuat artikel tentang topik ini tentang Stack Overflow.
Apakah HTML adalah Bahasa Markup yang Manusiawi?
Saya akan melihat apa yang dia tulis. Anda mungkin dapat menemukan paket perangkat lunak yang melakukan apa yang Anda inginkan "di luar kotak", atau setidaknya sangat dekat daripada menulis barang Anda sendiri dari awal.
sumber
Saat ini saya ditugaskan untuk mengambil data dari situs publik (ya, saya tahu). Untungnya itu sesuai dengan xhtml jadi saya dapat menggunakan xslt untuk mengumpulkan data yang saya butuhkan. Solusi yang dihasilkan dapat dibaca, bersih dan mudah diubah jika diperlukan. Sempurna!
sumber
Saya telah menggunakan XSLT sebelumnya. Kelompok 6 file .xslt (direfraktorisasi dari satu yang besar) sekitar 2750 baris jauh sebelum saya menulis ulang di C #. Kode C # saat ini 4000 baris yang mengandung banyak logika; Saya bahkan tidak ingin memikirkan tentang apa yang diperlukan untuk menulis di XSLT.
Titik di mana saya menyerah adalah ketika saya menyadari bahwa tidak memiliki XPATH 2.0 secara signifikan mengganggu kemajuan saya.
sumber
Untuk menjawab tiga pertanyaan Anda:
Saya percaya alasan banyak pengembang tidak menyukai XSLT adalah karena mereka tidak memahami paradigma berbeda yang mendasarinya. Tetapi dengan minat baru-baru ini dalam pemrograman fungsional, kita mungkin melihat XSLT kembali ...
sumber
Satu tempat di mana xslt benar-benar bersinar adalah dalam menghasilkan laporan. Saya telah menemukan bahwa proses 2 langkah, dengan langkah pertama mengekspor data laporan sebagai file xml, dan langkah kedua menghasilkan laporan visual dari xml menggunakan xslt. Ini memungkinkan laporan visual yang bagus sambil tetap menyimpan data mentah sebagai mekanisme validasi jika perlu.
sumber
Di perusahaan sebelumnya, kami melakukan banyak hal dengan XML dan XSLT. Baik XML dan XSLT berukuran besar.
Ya memang ada kurva belajar, tapi kemudian Anda memiliki alat yang ampuh untuk menangani XML. Dan Anda bahkan dapat menggunakan XSLT pada XSLT (yang terkadang berguna).
Kinerja juga merupakan masalah (dengan XML yang sangat besar) tetapi Anda dapat mengatasinya dengan menggunakan XSLT cerdas dan melakukan beberapa pemrosesan awal dengan XML (yang dihasilkan).
Siapapun yang memiliki pengetahuan tentang XSLT dapat mengubah penampilan produk jadi karena tidak dikompilasi.
sumber
Saya pribadi suka XSLT, dan Anda mungkin ingin memberikan tampilan sintaks yang disederhanakan (tidak ada template eksplisit, hanya file HTML lama biasa dengan beberapa tag XSLT untuk memasukkan nilai ke dalamnya), tetapi ini tidak untuk semua orang.
Mungkin Anda hanya ingin menawarkan antarmuka Wiki atau Penurunan harga yang sederhana kepada penulis Anda. Ada pustaka untuk itu juga, dan jika XSLT tidak berfungsi untuk Anda, mungkin XML juga tidak berfungsi untuk mereka.
sumber
XSLT bukanlah akhir dari semua transformasi xml. Namun, sangat sulit untuk menilai berdasarkan informasi yang diberikan jika itu adalah solusi terbaik untuk masalah Anda atau jika ada pendekatan lain yang lebih efisien dan dapat dipelihara. Anda mengatakan penulis dapat memasukkan konten mereka dalam format yang disederhanakan - format apa? Kotak teks? Jenis html apa yang Anda ubah menjadi? Untuk menilai apakah XSLT adalah alat yang tepat untuk pekerjaan itu, akan membantu jika mengetahui fitur transformasi ini secara lebih mendetail.
sumber
Saya menikmati menggunakan XSLT hanya untuk mengubah struktur pohon dokumen XML. Saya merasa tidak praktis untuk melakukan apa pun yang terkait dengan pemrosesan teks dan memindahkannya ke skrip khusus yang dapat saya jalankan sebelum atau setelah menerapkan XSLT ke dokumen XML.
XSLT 2.0 menyertakan lebih banyak fungsi string, tapi menurut saya itu tidak cocok untuk bahasanya, dan tidak banyak implementasi XSLT 2.0.
sumber