XPath та XSLT 2.0 для .NET? [зачинено]


91

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


codeproject.com/Articles/24766/… Саксонська бібліотека Java реалізує XSL 2.0 та XQuery 1.0. Використовуючи IKVM та GNU Classpath, ви можете отримати доступ до цієї бібліотеки у .NET. Однак інтерфейси для використання Saxon сильно відрізняються від тих, які ви використовуєте в .NET. З цієї сторінки статті ви можете завантажити інтерфейсні адаптери, які допомагають подолати розрив між саксонським інтерфейсом та .NET XslCompiledTransform. Це, в свою чергу, значно полегшує перенесення коду з використання .NET XSL 1.0 на Saxon XSL 2.0.
gls123

3
Ви можете опублікувати цей запит на функцію на uservoice від Microsoft
Binoj Antony 29.03.13

Відповіді:


131

Не думаю, що вони скоро додадуть підтримку 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

Легкий XPath2 для .NET тепер за адресою github.com/StefH/XPath2.Net
rakensi

1
@alirobe Люди, які за це не голосують, ще більше. Це лише доводить, наскільки пристрасними є люди, яким подобається XSLT. Багато речей, що викладаються в школах, рідко використовуються в реальному світі.
Макс Торо,

1
FYI: Запит основної функції .Net: github.com/dotnet/corefx/issues/2295 для підтримки XPath / XSLT v2 & 3.
JohnLBevan

23

Дивіться цю публікацію в блозі

Є кілька причин, чому ми не впроваджуємо XSLT 2.0 та XPath 2.0

Щоб впровадити всі 3 технології (XQuery, XSLT 2.0 та XPath 2.0), потрібно багато зусиль та ресурсів. Нашим керівним принципом було те, що ми вважаємо, що створення розповсюдження технологій запитів XML заплутує кінцевих користувачів. Ми воліємо застосувати ще одну мову, яку ми підштовхуємо людей до вивчення, ніж підтримувати та пояснювати ще три мови запитів та перетворень XML, на додаток до XPath 1.0 та XSLT 1.0, які вже існують у .NET Framework. Маючи наших клієнтів та підтримку, люди повинні мати справу зі складністю 3 складних мов запитів 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: скрипт дозволяє вам визначати довільно складні функції безпосередньо у вашому XSLT, використовуючи C # / VB / JScript.NET, без зловживання API розширюваності. Оскільки XslCompiledTransformвикористовується XPathNavigatorдля представлення вузла, і останній повністю реалізує XDM, ви можете фактично реалізувати всю функціональність XPath2 (наприклад, оператори <<та >>) як власні функції.
Павло Мінаєв

1
Це не останнє спілкування на цю тему. Наприклад: blogs.msdn.com/xmlteam/archive/2007/01/29/xslt-2-0.aspx
thorn̈

10
2013, без змін :(
Євгеній Набоков

13

Я розумію, що багато ресурсів Microsoft XML було перенаправлено з XSLT 2.0 на LINQ в XML, що - на мій погляд - взагалі не стосується того самого простору проблем, як XSLT.

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

Крім того, малоймовірно, що Microsoft запустить новий процесор XSLT 2.0 без редактора XSLT 2.0 та налагоджувача, інтегрованого в Visual Studio, тому знадобиться чимало зусиль / часу, щоб змінити рішення про неприйняття.

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


3

Microsoft не планує випускати підтримку XPath / XSLT 2.0 у .NET.

XQSharp забезпечує незалежну реалізацію XPath 2.0, XSLT 2.0 та XQuery для .NET.

[редагувати: випущено бета-версію XQSharp 2.0 (із XSLT 2.0)]


@ Олівер-Халлам: Цей прогноз все ще дійсний? Ви на шляху?
Dimitre Novatchev

@ Олівер-Халлам: Чи буде XQSharp-XSLT 2.0 швидшим за Saxon.NET?
Dimitre Novatchev

@ Dimitre-Novatchev - Смішно, що ти запитуєш зараз; ми повинні випустити бета-версію нашої реалізації XSLT протягом наступних кількох годин! Що стосується швидкості, ми вважаємо, що наші показники такі ж добрі, як і саксонські, хоча ми упереджені, тому хотіли б незалежної думки!
Oliver Hallam

1
XQSharp тепер називається XMLPrime
Mike Gale

2

Я не можу повірити, що вони не будуть на якомусь етапі, оскільки вони є основними технологіями W3C. Однак я не можу знайти жодного поточного посилання на них (лише інформація, опублікована давно).

Найближчим часом вам слід поглянути на Saxon, який підтримує потрібні вам версії Xpath / XSLT.


Замість цього я б використав AltovaXML: altova.com/altovaxml.html Він безкоштовний і підтримує Java, .NET та WIN32 через COM. Просто я сподівався, що .NET підтримає це спочатку.
Вім тен Брінк

1
API AltovaXML марний, плюс це власний код, тоді як Saxon управляється.
Макс Торо,

1
Велика проблема Altova полягає в тому, що вони відмовляються правильно застосовувати пробіли, зберігаючи лише текстові вузли.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.