XPath и XSLT 2.0 для .NET? [закрыто]

91

.NET 3.5 не полностью поддерживает XPATH 2.0 или XSLT 2.0, что очень плохо. Кто-нибудь знает, будут ли эти два компонента полностью поддерживаться в будущих версиях .NET?

Вим тен Бринк
источник
codeproject.com/Articles/24766/… Библиотека saxon Java реализует XSL 2.0 и XQuery 1.0. Используя IKVM и GNU Classpath, вы можете получить доступ к этой библиотеке в .NET. Однако интерфейсы для использования Saxon сильно отличаются от тех, которые вы используете в .NET. Со страницы этой статьи вы можете загрузить адаптеры интерфейса, которые помогают преодолеть разрыв между интерфейсом Saxon и .NET XslCompiledTransform. Это, в свою очередь, значительно упрощает перенос кода с использования .NET XSL 1.0 на Saxon XSL 2.0.
gls123
3
Вы можете опубликовать этот запрос функции в uservoice от Microsoft
Биной ​​Энтони

Ответы:

130

Не думаю, что в ближайшее время они добавят поддержку XPath 2.0 или XSLT 2.0.

Однако вы не должны расстраиваться, если они не являются частью BCL, если у вас есть сторонние реализации:

Microsoft ориентирована на клиента. Если клиенты этого не хотят, они этого не сделают.


2009-11-18: Я связался с командой XML здесь и получил следующий ответ:

Хотя XML продолжает оставаться ключевой частью нашей платформы в будущем, мы решили не заниматься реализацией XSLT 2.0 в настоящее время. Если вы пытаетесь выполнить конкретную задачу XSLT и испытываете трудности с XSLT 1.0, сообщите нам, и мы сделаем все возможное, чтобы помочь.


Этот список теперь поддерживается на github.com/maxtoroq/dotnet-xml.

Макс Торо
источник
22
Изначально они обещали реализацию - вот почему существует только несколько реализаций, потому что, когда большая компания, такая как Microsoft, говорит, что мы сделаем это и дадим всем как часть Windows, нет причин для программирования. Но затем MS потеряла нескольких ключевых людей в команде XML, и с тех пор поддержка 2.0 прекратилась.
CodeRipper
6
Этот ответ выглядит устрашающе знакомым - я задал аналогичный вопрос несколько лет назад и получил тот же ответ. Позор - XSLT 2.0 выглядит довольно важным улучшением удобства использования языка.
Eamon Nerbonne
1
Настоящая проблема заключается в том, что ни один из этих сторонних параметров не был обновлен для работы в .NET Standard / Core, а некоторые из них основаны на JKVM, что означает, что они не могут быть обновлены. Учитывая, сколько сторонних коммерческих продуктов вы связали там, я не уверен, что
фраза
1
Если бы они действительно были ориентированы на клиента, они бы это сделали. Это одна из самых популярных проблем в UserVoice. Все умоляют об этом. XSLT не является нишевым, ему преподают на большинстве курсов по информационным системам. Это фундаментальный формат обмена данными.
Алироб
2
К вашему сведению: .Net Core Feature Request: github.com/dotnet/corefx/issues/2295 для поддержки XPath / XSLT v2 и 3.
JohnLBevan
23

См. Это сообщение в блоге

Есть несколько причин, по которым мы не реализуем XSLT 2.0 и XPath 2.0.

Для реализации всех трех технологий (XQuery, XSLT 2.0 и XPath 2.0) требуется много усилий и ресурсов. Нашим руководящим принципом было то, что мы считаем, что распространение технологий XML-запросов сбивает с толку конечных пользователей. Мы предпочли бы реализовать еще один язык, который мы заставляем людей изучать, чем поддерживать и объяснять еще три языка XML-запросов и преобразований в дополнение к XPath 1.0 и XSLT 1.0, которые уже существуют в .NET Framework. Нашим клиентам и специалистам службы поддержки приходится иметь дело со сложностью трех сложных языков запросов XML, два из которых выглядят одинаково, но ведут себя совершенно по-разному в случае XPath 2.0, а XQuery казался нам не таким полезным.

Давид Басараб
источник
12
Это 5 лет назад из блога под названием «Почему вы не увидите XSLT 2.0 или XPath 2.0 в следующей версии .NET Framework» (выделено мной)
Брайан Агнью
1
Благодарность! Не заметил этого! Снова не принял этот ответ, надеясь на новое объяснение. (Хотя это хорошее объяснение, так что +1 остается.)
Вим тен Бринк
3
Тем не менее, при работе с XSLT в .NET следует помнить о двух вещах: 1) он поддерживает exslt: node-set (), который охватывает одно из больших преимуществ XSLT 2.0, и 2) msxsl: script позволяет вам определять произвольно сложные функции непосредственно в вашем XSLT, используя C # / VB / JScript.NET, без использования API расширяемости. Поскольку XslCompiledTransformиспользуется XPathNavigatorдля представления узла, а последний полностью реализует XDM, вы можете реализовать все функции XPath2 (например, операторы <<и >>) в виде дополнительных функций.
Павел Минаев
1
Это не последнее сообщение на эту тему. Например: blogs.msdn.com/xmlteam/archive/2007/01/29/xslt-2-0.aspx
thorn̈
11
2013, без изменений :(
Евгений Набоков
12

Насколько я понимаю, многие ресурсы Microsoft XML были переведены с XSLT 2.0 на LINQ to XML, который, на мой взгляд, не решает то же проблемное пространство, что и XSLT.

Предполагалось, что LINQ to XSD улучшит LINQ to XML (а также преимущества схемы XML, синтаксис менее уродливый), но некоторое время назад Microsoft предоставила его на CodePlex с открытым исходным кодом и, похоже, не пользуется поддержкой сообщества.

Кроме того, маловероятно, что Microsoft запустит новый процессор XSLT 2.0 без редактора XSLT 2.0 и отладчика, интегрированного в Visual Studio, поэтому потребуется немало усилий / времени, чтобы отменить их решение о «непринятии». [Обновление] Теперь есть расширение XSLT 3.0 для Microsoft VSCode (управляемое мной), которое интегрируется с процессором Saxon 3.0 XSLT.

Так что вместо этого у нас есть Saxon.NET, который имеет безупречную репутацию в области соответствия стандартам и предоставляет отличные возможности расширения для .NET.

pgfearo
источник
3

Microsoft не планирует выпускать поддержку XPath / XSLT 2.0 в .NET.

XQSharp предоставляет стороннюю реализацию XPath 2.0, XSLT 2.0 и XQuery для .NET.

[edit: выпущена бета-версия XQSharp 2.0 (с XSLT 2.0)]

Оливер Халлам
источник
@ Оливер-Халлам: Этот прогноз еще в силе? Вы на правильном пути?
Димитр Новачев
@ Оливер-Халлам: Будет ли XQSharp-XSLT 2.0 быстрее, чем Saxon.NET?
Димитр Новачев
@ Dimitre-Novatchev - Забавно спросите вы сейчас; мы должны выпустить бета-версию нашей реализации XSLT в ближайшие несколько часов! Что касается скорости, мы считаем, что наши выступления не уступают Saxon, хотя мы предвзяты, поэтому нам хотелось бы получить независимое мнение!
Оливер Халлам,
1
XQSharp теперь называется XMLPrime
Майк Гейл
2

Я не могу поверить, что на каком-то этапе их не будет, поскольку они являются основными технологиями W3C. Однако я не могу найти текущую ссылку на них (только информация, опубликованная давно).

В ближайшем будущем вам стоит взглянуть на Saxon, который поддерживает нужные вам версии Xpath / XSLT.

Брайан Агнью
источник
Вместо этого я бы использовал AltovaXML: altova.com/altovaxml.html Это бесплатно и поддерживает Java, .NET и WIN32 через COM. Просто я надеялся, что .NET будет поддерживать его изначально.
Вим тен Бринк
1
AltovaXML API бесполезен, плюс его собственный код, а Saxon - управляемый.
Макс Торо,
1
Большая проблема Altova в том, что они отказываются корректно реализовывать сохранение пробелов только текстовых узлов.