XPath và XSLT 2.0 cho .NET? [đóng cửa]


91

.NET 3.5 không hoàn toàn hỗ trợ XPATH 2.0 hoặc XSLT 2.0, điều này quá tệ. Có ai biết nếu hai cái này sẽ được bao gồm và hỗ trợ đầy đủ trong bất kỳ phiên bản .NET nào trong tương lai không?


codeproject.com/Articles/24766/… Thư viện Java saxon triển khai XSL 2.0 và XQuery 1.0. Sử dụng IKVM và GNU Classpath, bạn có thể truy cập vào thư viện này trong .NET. Tuy nhiên, các giao diện sử dụng Saxon rất khác với các giao diện mà bạn sử dụng trong .NET. Từ trang bài viết này, bạn có thể tải xuống bộ điều hợp giao diện giúp thu hẹp khoảng cách giữa giao diện Saxon và .NET XslCompiledTransform. Điều này lần lượt giúp việc chuyển mã từ việc sử dụng .NET XSL 1.0 sang Saxon XSL 2.0 dễ dàng hơn nhiều.
gls123

3
Bạn có thể gửi yêu cầu này tính năng tại uservoice bởi Microsoft
Binoj Antony

Câu trả lời:


131

Tôi không nghĩ rằng họ sẽ sớm bổ sung hỗ trợ cho XPath 2.0 hoặc XSLT 2.0.

Tuy nhiên, bạn sẽ không cảm thấy tồi tệ nếu đây không phải là một phần của BCL, miễn là bạn có sẵn các triển khai của bên thứ ba:

Microsoft hướng tới khách hàng. Nếu khách hàng không muốn, họ sẽ không làm.


2009-11-18: Tôi đã liên hệ với nhóm XML tại đây và nhận được phản hồi sau:

Mặc dù XML tiếp tục là một phần quan trọng của nền tảng của chúng tôi trong tương lai, nhưng chúng tôi đã quyết định không theo đuổi triển khai XSLT 2.0 vào lúc này. Nếu có một nhiệm vụ XSLT cụ thể mà bạn đang cố gắng hoàn thành và gặp khó khăn với XSLT 1.0, vui lòng cho chúng tôi biết và chúng tôi sẽ cố gắng hết sức để trợ giúp.


Danh sách này hiện được duy trì tại github.com/maxtoroq/dotnet-xml


22
Ban đầu họ hứa hẹn về việc triển khai - đó là lý do tại sao chỉ có một số triển khai bởi vì khi công ty lớn như Microsoft nói rằng chúng tôi sẽ làm điều đó và chúng tôi sẽ cung cấp cho mọi người như một phần của Windows thì không có lý do gì để lập trình nó. Nhưng sau đó MS đã mất một số người chủ chốt trong Nhóm XML và kể từ đó hỗ trợ 2.0 đã chết.
CodeRipper

6
Câu trả lời đó trông quen thuộc một cách kỳ lạ - tôi đã hỏi một câu hỏi tương tự cách đây vài năm và nhận được câu trả lời tương tự. Xấu hổ - XSLT 2.0 có vẻ như là một cải tiến khá quan trọng đối với khả năng sử dụng ngôn ngữ.
Eamon Nerbonne

XPath2 nhẹ cho .NET hiện có tại github.com/StefH/XPath2.Net
rakensi 22/09/2016

1
@alirobe Những người không bỏ phiếu cho nó thậm chí còn nhiều hơn. Nó chỉ chứng tỏ những người thích XSLT đam mê như thế nào. Nhiều điều được dạy trong trường học hiếm khi được sử dụng trong thế giới thực.
Max Toro

1
FYI: .Net Yêu cầu tính năng chính: github.com/dotnet/corefx/issues/2295 để hỗ trợ XPath / XSLT v2 & 3.
JohnLBevan

23

Xem bài đăng trên blog này

Có một số lý do khiến chúng tôi không triển khai XSLT 2.0 và XPath 2.0

Cần rất nhiều nỗ lực và nguồn lực để triển khai cả 3 công nghệ (XQuery, XSLT 2.0 & XPath 2.0). Nguyên tắc hướng dẫn của chúng tôi là chúng tôi tin rằng việc tạo ra sự gia tăng của các công nghệ truy vấn XML là điều khó hiểu đối với người dùng cuối. Chúng tôi muốn triển khai thêm một ngôn ngữ mà chúng tôi thúc đẩy mọi người học hơn là phải hỗ trợ và giải thích thêm ba ngôn ngữ truy vấn và chuyển đổi XML, ngoài XPath 1.0 & XSLT 1.0 đã tồn tại trong .NET Framework. Việc khách hàng và những người hỗ trợ của chúng tôi phải đối mặt với sự phức tạp của 3 ngôn ngữ truy vấn XML phức tạp, hai ngôn ngữ này trông giống nhau nhưng hoạt động hoàn toàn khác trong trường hợp XPath 2.0 và XQuery đối với chúng tôi dường như không có lợi.


12
Đó là từ 5 năm trước từ một blog với tựa đề "Tại sao bạn sẽ không thấy XSLT 2.0 hoặc XPath 2.0 trong Tiếp theo phiên bản của .NET Framework" (nhấn mạnh của tôi)
Brian Agnew

1
Cảm ơn! Không nhận thấy điều đó! Không chấp nhận câu trả lời này một lần nữa, hy vọng có một lời giải thích mới hơn. (Mặc dù nó là một lời giải thích tốt nên 1 đợt nghỉ.)
Wim ten Brink

3
Điều đó nói rằng, có hai điều đáng lưu ý khi xử lý XSLT trong .NET: 1) nó hỗ trợ exslt: node-set (), bao gồm một trong những lợi thế lớn của XSLT 2.0 và 2) msxsl: script cho phép bạn xác định các hàm phức tạp tùy ý trực tiếp trong XSLT của bạn bằng cách sử dụng C # / VB / JScript.NET, mà không cần sử dụng các API khả năng mở rộng. Vì XslCompiledTransformsử dụng XPathNavigatorđể biểu diễn nút và sau này thực hiện đầy đủ XDM, bạn thực sự có thể triển khai tất cả chức năng XPath2 (như toán tử <<>>) dưới dạng các hàm tùy chỉnh trên đó.
Pavel Minaev 7/10/09

1
Đây không phải là cuộc giao tiếp cuối cùng về chủ đề này. Ví dụ: blogs.msdn.com/xmlteam/archive/2007/01/29/xslt-2-0.aspx
gai

10
2013, không có thay đổi :(
Evgeni Nabokov

13

Tôi hiểu là nhiều tài nguyên XML của Microsoft đã được chuyển hướng từ XSLT 2.0 sang LINQ sang XML, mà - theo quan điểm của tôi - không giải quyết cùng một không gian vấn đề như XSLT.

LINQ to XSD được cho là để nâng cao LINQ sang XML (cũng như các lợi ích của XML Schema, cú pháp ít xấu hơn), nhưng điều này đã được Microsoft đưa vào CodePlex một thời gian trước và dường như không có sự hỗ trợ của cộng đồng.

Ngoài ra, có khả năng Microsoft sẽ ra mắt bộ xử lý XSLT 2.0 mới mà không có trình chỉnh sửa và trình gỡ lỗi XSLT 2.0 được tích hợp vào Visual Studio, vì vậy sẽ cần khá nhiều nỗ lực / thời gian để đảo ngược quyết định 'không chấp nhận' của họ.

Vì vậy, thay vào đó chúng tôi có Saxon.NET, có danh tiếng tuân thủ các tiêu chuẩn không thể đạt được và cung cấp các tùy chọn khả năng mở rộng tuyệt vời cho .NET.


3

Microsoft không có kế hoạch phát hành hỗ trợ cho XPath / XSLT 2.0 trong .NET.

XQSharp cung cấp một bên thứ 3 triển khai XPath 2.0, XSLT 2.0 và XQuery cho .NET.

[chỉnh sửa: XQSharp 2.0 beta (với XSLT 2.0) đã được phát hành]


@ Oliver-Hallam: Dự báo này có còn hiệu lực không? Bạn đang đi đúng hướng?
Dimitre Novatchev

@ Oliver-Hallam: Liệu XQSharp-XSLT 2.0 có nhanh hơn Saxon.NET không?
Dimitre Novatchev

@ Dimitre-Novatchev - Bây giờ bạn hỏi thật buồn cười; chúng tôi sẽ phát hành phiên bản beta của việc triển khai XSLT của mình trong vài giờ tới! Về tốc độ, chúng tôi tin rằng hiệu suất của chúng tôi sẽ tốt như Saxon, mặc dù chúng tôi có thành kiến ​​nên chúng tôi muốn có ý kiến ​​độc lập!
Oliver Hallam

1
XQSharp bây giờ được gọi XMLPrime
Mike Gale

2

Tôi không thể tin rằng chúng sẽ không ở một số giai đoạn vì chúng là công nghệ W3C cốt lõi. Tuy nhiên tôi không thể tìm thấy bất kỳ tài liệu tham khảo hiện tại nào về những thứ này (chỉ có thông tin được đăng cách đây rất lâu).

Trong tương lai gần, bạn nên xem Saxon hỗ trợ các phiên bản Xpath / XSLT mà bạn yêu cầu.


Tôi sẽ sử dụng AltovaXML thay thế: altova.com/altovaxml.html Nó miễn phí và hỗ trợ Java, .NET và WIN32 thông qua COM. Chỉ là tôi đã hy vọng .NET sẽ hỗ trợ nó ngay từ đầu.
Wim ten Brink

1
API AltovaXML là vô dụng, cộng với đó là mã gốc, trong khi Saxon được quản lý.
Max Toro

1
Altova vấn đề lớn là họ từ chối thực hiện chính xác khoảng trắng chỉ các nút văn bản bảo tồn.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.