XPath dan XSLT 2.0 untuk .NET? [Tutup]


91

.NET 3.5 tidak sepenuhnya mendukung XPATH 2.0 atau XSLT 2.0, yang terlalu buruk. Adakah yang tahu jika keduanya akan disertakan dan didukung penuh dalam versi .NET mendatang?


codeproject.com/Articles/24766/… Pustaka saksofon Java mengimplementasikan XSL 2.0 dan XQuery 1.0. Menggunakan IKVM dan GNU Classpath, Anda bisa mendapatkan akses ke perpustakaan ini di .NET. Namun antarmuka untuk menggunakan Saxon sangat berbeda dengan yang Anda gunakan di .NET. Dari halaman artikel ini Anda dapat mengunduh adaptor antarmuka yang membantu menjembatani kesenjangan antara antarmuka Saxon dan .NET XslCompiledTransform. Ini pada gilirannya membuatnya lebih mudah untuk mem-port kode dari menggunakan .NET XSL 1.0 ke Saxon XSL 2.0.
gls123

3
Anda dapat mengirim permintaan fitur ini di uservoice oleh Microsoft
Binoj Antony

Jawaban:


130

Saya tidak berpikir mereka akan menambahkan dukungan untuk XPath 2.0 atau XSLT 2.0 dalam waktu dekat.

Namun, Anda tidak akan merasa sedih jika ini bukan bagian dari BCL, selama Anda memiliki penerapan pihak ketiga yang tersedia:

Microsoft berorientasi pada pelanggan. Jika pelanggan tidak menginginkannya, mereka tidak akan berhasil.


2009-11-18: Saya menghubungi tim XML di sini dan mendapat tanggapan ini:

Meskipun XML terus menjadi bagian penting dari platform kami di masa mendatang, kami telah memutuskan untuk tidak mengejar penerapan XSLT 2.0 saat ini. Jika ada tugas XSLT tertentu yang Anda coba selesaikan dan mengalami kesulitan dengan XSLT 1.0, beri tahu kami dan kami akan melakukan yang terbaik untuk membantu.


Daftar ini sekarang disimpan di github.com/maxtoroq/dotnet-xml


22
Mereka awalnya menjanjikan implementasi - itulah alasan mengapa hanya ada sedikit implementasi karena ketika perusahaan besar seperti Microsoft mengatakan kami akan melakukannya dan kami akan memberikannya kepada semua orang sebagai bagian dari Windows, tidak ada alasan untuk memprogramnya. Tapi kemudian MS kehilangan beberapa orang penting dalam Tim XML dan sejak saat itu dukungan 2.0 mati.
CodeRipper

6
Jawaban itu terlihat sangat familiar - Saya mengajukan pertanyaan serupa beberapa tahun yang lalu dan mendapatkan jawaban yang sama. Malu - XSLT 2.0 sepertinya peningkatan yang cukup penting untuk kegunaan bahasa.
Eamon Nerbonne

1
Masalah sebenarnya adalah bahwa tidak ada dari opsi pihak ketiga yang telah diperbarui untuk berjalan di .NET Standard / Core - dan beberapa didasarkan pada JKVM yang berarti mereka tidak dapat diperbarui. Mempertimbangkan berapa banyak produk komersial pihak ketiga yang Anda
tautkan

1
Jika mereka benar-benar berorientasi pada pelanggan, mereka akan melakukannya. Ini adalah salah satu masalah yang paling banyak mendapat suara positif di UserVoice mereka. Semua orang memohon untuk itu. XSLT bukanlah niche, ini diajarkan di sebagian besar kelas Sistem Informasi. Ini adalah format pertukaran data fundamental.
Meskipun

2
FYI: .Net Core Feature Request: github.com/dotnet/corefx/issues/2295 untuk dukungan XPath / XSLT v2 & 3.
JohnLBevan

23

Lihat postingan blog ini

Ada beberapa alasan mengapa kami tidak menerapkan XSLT 2.0 dan XPath 2.0

Dibutuhkan banyak usaha dan sumber daya untuk menerapkan semua 3 teknologi (XQuery, XSLT 2.0 & XPath 2.0). Prinsip panduan kami adalah bahwa kami yakin membuat perkembangan teknologi kueri XML akan membingungkan pengguna akhir. Kami lebih suka menerapkan satu bahasa lagi yang kami dorong agar orang belajar daripada harus mendukung dan menjelaskan tiga bahasa kueri dan transformasi XML lagi, selain XPath 1.0 & XSLT 1.0 yang sudah ada di .NET Framework. Memiliki pelanggan dan orang-orang pendukung kami harus berurusan dengan kompleksitas dari 3 bahasa kueri XML yang canggih, dua di antaranya terlihat serupa tetapi berperilaku sangat berbeda dalam kasus XPath 2.0 dan XQuery bagi kami tampaknya tidak terlalu menguntungkan.


12
Itu dari 5 tahun yang lalu dari blog berjudul "Why You Won't See XSLT 2.0 atau XPath 2.0 di Versi Berikutnya dari .NET Framework" (penekanan saya)
Brian Agnew

1
Terima kasih! Tidak menyadarinya! Tidak menerima jawaban ini lagi, mengharapkan penjelasan yang lebih baru. (Meskipun ini adalah penjelasan yang bagus sehingga +1 tetap ada.)
Wim ten Brink

3
Yang mengatakan, ada dua hal yang perlu diingat ketika berurusan dengan XSLT di .NET: 1) mendukung exslt: node-set (), yang mencakup salah satu keuntungan besar XSLT 2.0, dan 2) msxsl: script memungkinkan Anda tentukan fungsi kompleks sewenang-wenang secara langsung dalam XSLT Anda menggunakan C # / VB / JScript.NET, tanpa menyia-nyiakan API yang dapat diperpanjang. Sejak XslCompiledTransformdigunakan XPathNavigatoruntuk representasi node, dan yang terakhir mengimplementasikan XDM sepenuhnya, Anda sebenarnya dapat mengimplementasikan semua fungsionalitas XPath2 (seperti operator <<dan >>) sebagai fungsi kustom di atasnya.
Pavel Minaev

1
Ini bukan komunikasi terakhir tentang masalah ini. Misalnya: blogs.msdn.com/xmlteam/archive/2007/01/29/xslt-2-0.aspx
duri

11
2013, tidak ada perubahan :(
Evgeni Nabokov

12

Pemahaman saya adalah bahwa banyak sumber daya Microsoft XML dialihkan dari XSLT 2.0 ke LINQ ke XML, yang - dalam pandangan saya - tidak membahas ruang masalah yang sama dengan XSLT sama sekali.

LINQ ke XSD seharusnya meningkatkan LINQ ke XML (serta manfaat Skema XML, sintaksnya tidak terlalu jelek), tetapi ini bersumber terbuka oleh Microsoft ke CodePlex beberapa waktu lalu dan tampaknya tidak memiliki dukungan komunitas.

Selain itu, kecil kemungkinannya Microsoft akan meluncurkan prosesor XSLT 2.0 baru tanpa editor dan debugger XSLT 2.0 yang terintegrasi ke dalam Visual Studio, sehingga diperlukan sedikit usaha / waktu untuk membalikkan keputusan 'non-adopsi' mereka. [Pembaruan] Sekarang ada ekstensi XSLT 3.0 untuk Microsoft VSCode (dikelola sendiri) yang terintegrasi dengan prosesor XSLT 3.0 Saxon.

Jadi sebagai gantinya kami memiliki Saxon.NET, yang memiliki reputasi kepatuhan standar yang tidak dapat disangkal dan menyediakan opsi ekstensibilitas yang sangat baik untuk .NET.


3

Microsoft tidak berencana merilis dukungan untuk XPath / XSLT 2.0 di .NET.

XQSharp menyediakan implementasi pihak ketiga XPath 2.0, XSLT 2.0 dan XQuery untuk .NET.

[sunting: XQSharp 2.0 beta (dengan XSLT 2.0) telah dirilis]


@ Oliver-Hallam: Apakah perkiraan ini masih valid? Apakah Anda di jalur yang benar?
Dimitre Novatchev

@ Oliver-Hallam: Akankah XQSharp-XSLT 2.0 lebih cepat dari Saxon.NET?
Dimitre Novatchev

@ Dimit-Novatchev - Lucu Anda bertanya sekarang; kami harus memiliki versi beta dari implementasi XSLT kami yang dirilis dalam beberapa jam ke depan! Untuk kecepatan, kami yakin performa kami sebagus Saxon, meskipun kami bias, jadi kami akan menyukai opini independen!
Oliver Hallam

1
XQSharp sekarang disebut XMLPrime
Mike Gale

2

Saya tidak percaya mereka tidak akan berada pada tahap tertentu karena mereka adalah teknologi inti W3C. Namun saya tidak dapat menemukan referensi terkini untuk ini (hanya info yang diposting lama sekali).

Dalam waktu dekat Anda harus melihat Saxon yang mendukung versi Xpath / XSLT yang Anda butuhkan.


Saya akan menggunakan AltovaXML sebagai gantinya: altova.com/altovaxml.html Gratis dan mendukung Java, .NET dan WIN32 melalui COM. Hanya saja saya berharap .NET akan mendukungnya secara native.
Wim ten Brink

1
AltovaXML API tidak berguna, ditambah kode aslinya, sementara Saxon dikelola.
Max Toro

1
Masalah besar Altova adalah bahwa mereka menolak untuk menerapkan dengan benar ruang kosong hanya node teks yang melestarikan.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.