.NET için XPath ve XSLT 2.0? [kapalı]


91

.NET 3.5, XPATH 2.0 veya XSLT 2.0'ı tamamen desteklemiyor ki bu çok kötü. Bu iki yer ve edilecek olmadığını biliyor mu tam olarak desteklenen ileride NET sürümlerinde?


codeproject.com/Articles/24766/… Java saxon kitaplığı XSL 2.0 ve XQuery 1.0'ı uygular. IKVM ve GNU Classpath kullanarak, .NET içindeki bu kitaplığa erişebilirsiniz. Ancak Saxon'u kullanmak için kullanılan arayüzler, .NET'te kullandıklarınızdan çok farklıdır. Bu makale sayfasından Saxon arayüzü ile .NET XslCompiledTransform arasındaki boşluğu kapatmaya yardımcı olan arayüz adaptörlerini indirebilirsiniz. Bu da kodların .NET XSL 1.0'dan Saxon XSL 2.0'a taşınmasını kolaylaştırır.
gls123

3
Sen bu özellik isteği gönderebilir UserVoice Microsoft tarafından
Binoj Antony

Yanıtlar:


130

Yakın zamanda XPath 2.0 veya XSLT 2.0 için destek ekleyeceklerini sanmıyorum.

Ancak, 3. taraf uygulamalarınız olduğu sürece bunlar BCL'nin parçası değilse kendinizi kötü hissetmemelisiniz:

Microsoft müşteri odaklıdır. Müşteriler istemezse, başaramayacaklar.


2009-11-18: XML ekibiyle buradan iletişime geçtim ve şu yanıtı aldım:

XML ileriye dönük platformumuzun önemli bir parçası olmaya devam ederken, şu anda XSLT 2.0 uygulamasını takip etmemeye karar verdik. Başarmaya çalıştığınız belirli bir XSLT görevi varsa ve XSLT 1.0'da zorluk yaşıyorsanız, lütfen bize bildirin, size yardımcı olmak için elimizden geleni yapacağız.


Bu liste artık github.com/maxtoroq/dotnet-xml adresinde tutulmaktadır.


22
Başlangıçta uygulama sözü verdiler - sadece birkaç uygulamanın olmasının nedeni budur, çünkü Microsoft gibi büyük bir şirket bunu yapacağımızı ve bunu Windows'un bir parçası olarak herkese vereceğimizi söylediğinde programlamak için hiçbir neden yoktur. Ancak daha sonra MS, XML Takımındaki birkaç kilit kişiyi kaybetti ve o zamandan beri 2.0 desteği öldü.
CodeRipper

6
Bu cevap ürkütücü bir şekilde tanıdık geliyor - birkaç yıl önce benzer bir soru sordum ve aynı cevabı aldım. Utanç - XSLT 2.0, dil kullanılabilirliğinde oldukça önemli bir gelişme gibi görünüyor.
Eamon Nerbonne

1
Asıl sorun, bu 3. taraf seçeneklerinin hiçbirinin .NET Standard / Core üzerinde çalışacak şekilde güncellenmemiş olmasıdır - ve birçoğu JKVM'yi temel alır , bu da güncellenemeyecekleri anlamına gelir . Oraya kaç tane 3. taraf ticari ürün bağladığınız düşünüldüğünde, "müşteri odaklı" satırın herhangi bir şeyi açıkladığından emin değilim ..
Jaykul

1
Gerçekten müşteri odaklı olsalardı, bunu yaparlardı. Bu, UserVoice'larında en çok oy alan konulardan biridir. Herkes bunun için yalvarıyor. XSLT niş değildir, çoğu Bilgi Sistemleri sınıfında öğretilir. Temel bir veri değişim formatıdır.
alirobe

2
Bilginize: .Net Çekirdek Özellik İsteği: XPath / XSLT v2 & 3 desteği için github.com/dotnet/corefx/issues/2295 .
JohnLBevan

23

Bu blog gönderisine bakın

XSLT 2.0 ve XPath 2.0'ı uygulamamamızın birkaç nedeni var

3 teknolojinin tümünü (XQuery, XSLT 2.0 ve XPath 2.0) uygulamak çok çaba ve kaynak gerektirir. Temel ilkemiz, XML sorgu teknolojilerinin yaygınlaşmasının son kullanıcılar için kafa karıştırıcı olduğuna inanmamızdı. Halihazırda .NET Framework'te mevcut olan XPath 1.0 ve XSLT 1.0'a ek olarak, üç XML sorgusu ve dönüştürme dilini desteklemek ve açıklamak yerine, insanları öğrenmeye zorladığımız bir dil daha uygulamayı tercih ediyoruz. Müşterilerimize ve destek çalışanlarımıza sahip olmak, ikisi benzer görünen ancak XPath 2.0 ve XQuery durumunda oldukça farklı davranan 3 karmaşık XML sorgu dilinin karmaşıklığıyla başa çıkmak zorunda.


12
Bu, 5 yıl önce " .NET Framework'ün Sonraki Sürümünde Neden XSLT 2.0 veya XPath 2.0'ı Görmüyorsunuz" başlıklı bir blogdan alınmıştır (vurgu)
Brian Agnew

1
Teşekkürler! Bunu fark etmedim! Daha yeni bir açıklama umarak bu cevabı tekrar kabul etmedim. (İyi bir açıklama olmasına rağmen +1 kalır.)
Wim ten Brink

3
Bununla birlikte, .NET'te XSLT ile uğraşırken akılda tutulması gereken iki şey vardır: 1) exslt'i destekler: XSLT 2.0'ın en büyük avantajlarından birini kapsayan node-set () ve 2) msxsl: script size izin verir Genişletilebilirlik API'leri ile uğraşmadan C # / VB / JScript.NET kullanarak doğrudan XSLT'nizde rastgele karmaşık işlevleri tanımlayın. Yana XslCompiledTransformkullanımlar XPathNavigatordüğüm temsil için ve ikincisi tam uygular XDM, aslında bütün XPath2 (operatörler gibi işlevleri uygulayabilirsiniz <<ve >>bunun üzerine özel işlevler gibi).
Pavel Minaev

1
Konuyla ilgili son iletişim değil. Örneğin: blogs.msdn.com/xmlteam/archive/2007/01/29/xslt-2-0.aspx
thorn̈

11
2013, değişiklik yok :(
Evgeni Nabokov

12

Anladığım kadarıyla, birçok Microsoft XML kaynağı XSLT 2.0'dan LINQ'ya, XML'e yönlendirildi, ki bu benim görüşüme göre - XSLT ile aynı problem alanını ele almıyor.

LINQ to XSD'nin LINQ to XML'i geliştirmesi gerekiyordu (XML Şeması yararlarının yanı sıra, sözdizimi daha az çirkin), ancak bu, bir süre önce Microsoft tarafından CodePlex'e açık kaynaklıydı ve topluluk desteğine sahip olmadığı görülüyor.

Ayrıca, Microsoft'un bir XSLT 2.0 editörü ve Visual Studio'ya entegre hata ayıklayıcı olmadan yeni bir XSLT 2.0 işlemcisi başlatması pek olası değildir, bu nedenle 'benimsememe' kararını tersine çevirmek için epeyce çaba / zaman gerekir. [Güncelleme] Artık Saxon'un 3.0 XSLT işlemcisiyle entegre olan Microsoft VSCode için (kendim yönetiyor) bir XSLT 3.0 uzantısı var.

Bunun yerine, kusursuz bir standartlara uyumluluk itibarına sahip olan ve .NET için mükemmel genişletilebilirlik seçenekleri sunan Saxon.NET'e sahibiz.


3

Microsoft'un .NET'te XPath / XSLT 2.0 desteği yayınlama planı yoktur.

XQSharp , .NET için XPath 2.0, XSLT 2.0 ve XQuery'nin 3. taraf uygulamasını sağlar.

[düzenleme: XQSharp 2.0 beta (XSLT 2.0 ile) yayınlandı]


@ Oliver-Hallam: Bu tahmin hala geçerli mi? Yolda mısın?
Dimitre Novatchev 04

@ Oliver-Hallam: XQSharp-XSLT 2.0, Saxon.NET'ten daha hızlı olacak mı?
Dimitre Novatchev 04

@ Dimitre-Novatchev - Şimdi sormanız komik; Önümüzdeki birkaç saat içinde XSLT uygulamamızın beta sürümünü yayınlamış olmalıyız! Hıza gelince, performansımızın Sakson kadar iyi olduğuna inanıyoruz, ancak önyargılı olsak da bağımsız bir görüş isteriz!
Oliver Hallam

1
XQSharp'ın adı artık XMLPrime
Mike Gale

2

Temel W3C teknolojileri oldukları için bir aşamada olmayacaklarına inanamıyorum. Ancak bunlarla ilgili güncel bir referans bulamıyorum (yalnızca uzun süre önce gönderilen bilgiler).

Yakın gelecekte yapabilmek için en bir göz atmalısınız Saxon size gereken XPath / XSLT sürümlerini desteklemektedir.


Bunun yerine AltovaXML'yi kullanırdım: altova.com/altovaxml.html Ücretsizdir ve COM üzerinden Java, .NET ve WIN32'yi destekler. Sadece .NET'in bunu yerel olarak destekleyeceğini umuyordum.
Wim ten Brink

1
AltovaXML API işe yaramaz, ayrıca Saxon yönetilirken yerel koddur.
Max Toro

1
Altova'nın büyük problemi, yalnızca metin düğümlerini koruyarak doğru şekilde beyaz boşluk uygulamayı reddetmeleridir.
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.