.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, сообщите нам, и мы сделаем все возможное, чтобы помочь.
Изначально они обещали реализацию - вот почему существует только несколько реализаций, потому что, когда большая компания, такая как Microsoft, говорит, что мы сделаем это и дадим всем как часть Windows, нет причин для программирования. Но затем MS потеряла нескольких ключевых людей в команде XML, и с тех пор поддержка 2.0 прекратилась.
CodeRipper
6
Этот ответ выглядит устрашающе знакомым - я задал аналогичный вопрос несколько лет назад и получил тот же ответ. Позор - XSLT 2.0 выглядит довольно важным улучшением удобства использования языка.
Eamon Nerbonne
1
Настоящая проблема заключается в том, что ни один из этих сторонних параметров не был обновлен для работы в .NET Standard / Core, а некоторые из них основаны на JKVM, что означает, что они не могут быть обновлены. Учитывая, сколько сторонних коммерческих продуктов вы связали там, я не уверен, что
фраза
1
Если бы они действительно были ориентированы на клиента, они бы это сделали. Это одна из самых популярных проблем в UserVoice. Все умоляют об этом. XSLT не является нишевым, ему преподают на большинстве курсов по информационным системам. Это фундаментальный формат обмена данными.
Есть несколько причин, по которым мы не реализуем 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 казался нам не таким полезным.
Это 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 (например, операторы <<и >>) в виде дополнительных функций.
Насколько я понимаю, многие ресурсы 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.
@ Оливер-Халлам: Этот прогноз еще в силе? Вы на правильном пути?
Димитр Новачев
@ Оливер-Халлам: Будет ли 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 в том, что они отказываются корректно реализовывать сохранение пробелов только текстовых узлов.
Ответы:
Не думаю, что в ближайшее время они добавят поддержку XPath 2.0 или XSLT 2.0.
Однако вы не должны расстраиваться, если они не являются частью BCL, если у вас есть сторонние реализации:
Microsoft ориентирована на клиента. Если клиенты этого не хотят, они этого не сделают.
2009-11-18: Я связался с командой XML здесь и получил следующий ответ:
Этот список теперь поддерживается на github.com/maxtoroq/dotnet-xml.
источник
См. Это сообщение в блоге
источник
XslCompiledTransform
используетсяXPathNavigator
для представления узла, а последний полностью реализует XDM, вы можете реализовать все функции XPath2 (например, операторы<<
и>>
) в виде дополнительных функций.Насколько я понимаю, многие ресурсы 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.
источник
Microsoft не планирует выпускать поддержку XPath / XSLT 2.0 в .NET.
XQSharp предоставляет стороннюю реализацию XPath 2.0, XSLT 2.0 и XQuery для .NET.
[edit: выпущена бета-версия XQSharp 2.0 (с XSLT 2.0)]
источник
Я не могу поверить, что на каком-то этапе их не будет, поскольку они являются основными технологиями W3C. Однако я не могу найти текущую ссылку на них (только информация, опубликованная давно).
В ближайшем будущем вам стоит взглянуть на Saxon, который поддерживает нужные вам версии Xpath / XSLT.
источник