.NET 3.5 não oferece suporte completo a XPATH 2.0 ou XSLT 2.0, o que é muito ruim. Alguém sabe se esses dois serão incluídos e totalmente suportados em quaisquer versões futuras do .NET?
codeproject.com/Articles/24766/… A biblioteca Java saxon implementa XSL 2.0 e XQuery 1.0. Usando IKVM e GNU Classpath, você pode obter acesso a esta biblioteca em .NET. No entanto, as interfaces para usar o Saxon são muito diferentes daquelas que você usa no .NET. A partir desta página de artigo, você pode baixar adaptadores de interface que ajudam a preencher a lacuna entre a interface Saxon e o .NET XslCompiledTransform. Isso, por sua vez, torna muito mais fácil portar o código do .NET XSL 1.0 para o Saxon XSL 2.0.
gls123
3
Você pode postar esta solicitação de recurso em uservoice da Microsoft
Binoj Antony
Respostas:
131
Eu não acho que eles irão adicionar suporte para XPath 2.0 ou XSLT 2.0 tão cedo.
No entanto, você não deve se sentir mal se eles não fizerem parte do BCL, contanto que você tenha implementações de terceiros disponíveis:
A Microsoft é orientada para o cliente. Se os clientes não quiserem, não conseguirão.
18/11/2009: Entrei em contato com a equipe XML aqui e recebi esta resposta:
Embora XML continue a ser uma parte importante de nossa plataforma no futuro, decidimos não buscar uma implementação de XSLT 2.0 no momento. Se houver uma tarefa XSLT específica que você está tentando realizar e está tendo dificuldades com o XSLT 1.0, informe-nos e faremos o possível para ajudar.
Eles inicialmente prometeram implementação - essa é a razão pela qual existem apenas algumas implementações, porque quando uma grande empresa como a Microsoft diz que faremos e daremos a todos como parte do Windows, não há razão para programá-lo. Mas então a MS perdeu várias pessoas importantes na equipe XML e, desde então, o suporte 2.0 está morto.
CodeRipper de
6
Essa resposta parece estranhamente familiar - fiz uma pergunta semelhante alguns anos atrás e obtive a mesma resposta. Vergonha - o XSLT 2.0 parece uma melhoria bastante importante para a usabilidade da linguagem.
@alirobe As pessoas que não votam nele são ainda mais. Isso só prova o quão apaixonadas são as pessoas que gostam de XSLT. Muitas coisas ensinadas nas escolas raramente são usadas no mundo real.
Existem vários motivos pelos quais não estamos implementando XSLT 2.0 e XPath 2.0
É preciso muito esforço e recursos para implementar todas as 3 tecnologias (XQuery, XSLT 2.0 e XPath 2.0). Nosso princípio orientador era que acreditamos que a criação de uma proliferação de tecnologias de consulta XML confunde os usuários finais. Preferimos implementar mais uma linguagem que incentivamos as pessoas a aprender do que ter que oferecer suporte e explicar mais três linguagens de consulta e transformação XML, além de XPath 1.0 e XSLT 1.0 que já existem no .NET Framework. Ter nossos clientes e pessoal de suporte tem que lidar com a complexidade de 3 linguagens de consulta XML sofisticadas, duas das quais são semelhantes, mas se comportam de maneira bem diferente no caso do XPath 2.0 e XQuery não nos pareceu tão benéfico.
Isso é de 5 anos atrás de um blog intitulado "Por que você não verá XSLT 2.0 ou XPath 2.0 na próxima versão do .NET Framework" (grifo meu)
Brian Agnew
1
Obrigado! Não percebi isso! Não aceitou esta resposta novamente, esperando por uma explicação mais nova. (Embora seja uma boa explicação, então o +1 permanece.)
Wim ten Brink
3
Dito isso, há duas coisas que vale a pena ter em mente ao lidar com XSLT no .NET: 1) ele suporta exslt: node-set (), que cobre uma das grandes vantagens do XSLT 2.0, e 2) msxsl: script permite definir funções arbitrariamente complexas diretamente em seu XSLT usando C # / VB / JScript.NET, sem mexer com APIs de extensibilidade. Uma vez que XslCompiledTransformusa XPathNavigatorpara representação de nó, e o último implementa totalmente o XDM, você pode realmente implementar todas as funcionalidades XPath2 (como operadores <<e >>) como funções personalizadas em cima disso.
Meu entendimento é que muitos recursos Microsoft XML foram desviados de XSLT 2.0 para LINQ to XML, que - na minha opinião - não aborda o mesmo espaço de problema que o XSLT.
O LINQ to XSD deveria aprimorar o LINQ to XML (assim como os benefícios do XML Schema, a sintaxe é menos feia), mas foi disponibilizado pela Microsoft para o CodePlex há algum tempo e parece não ter suporte da comunidade.
Além disso, é improvável que a Microsoft lance um novo processador XSLT 2.0 sem um editor e depurador XSLT 2.0 integrado ao Visual Studio, então um pouco de esforço / tempo seria necessário para reverter sua decisão de 'não adoção'.
Portanto, em vez disso, temos o Saxon.NET, que tem uma reputação de conformidade de padrões inatacável e oferece excelentes opções de extensibilidade para .NET.
@ Oliver-Hallam: Essa previsão ainda é válida? Você está no caminho certo?
Dimitre Novatchev
@ Oliver-Hallam: O XQSharp-XSLT 2.0 será mais rápido que o Saxon.NET?
Dimitre Novatchev
@ Dimitre-Novatchev - Engraçado você perguntar agora; devemos ter uma versão beta de nossa implementação XSLT lançada nas próximas horas! Quanto à velocidade, acreditamos que nosso desempenho é tão bom quanto o saxão, embora sejamos tendenciosos, então adoraríamos uma opinião independente!
Oliver Hallam
1
XQSharp agora é chamado XMLPrime
Mike Gale,
2
Eu não posso acreditar que eles não estarão em algum estágio, já que são tecnologias centrais do W3C. No entanto, não consigo encontrar nenhuma referência atual a eles (apenas informações postadas há muito tempo).
Em um futuro próximo, você deve dar uma olhada no Saxon, que suporta as versões Xpath / XSLT de que você precisa.
Eu usaria AltovaXML em vez disso: altova.com/altovaxml.html É gratuito e oferece suporte a Java, .NET e WIN32 por meio de COM. Eu só esperava que o .NET o suportasse nativamente.
Wim ten Brink,
1
A API AltovaXML é inútil, além de seu código nativo, enquanto o Saxon é gerenciado.
Max Toro,
1
O grande problema da Altova é que eles se recusam a implementar corretamente o espaço em branco, preservando apenas os nós de texto.
Respostas:
Eu não acho que eles irão adicionar suporte para XPath 2.0 ou XSLT 2.0 tão cedo.
No entanto, você não deve se sentir mal se eles não fizerem parte do BCL, contanto que você tenha implementações de terceiros disponíveis:
A Microsoft é orientada para o cliente. Se os clientes não quiserem, não conseguirão.
18/11/2009: Entrei em contato com a equipe XML aqui e recebi esta resposta:
Esta lista agora é mantida em github.com/maxtoroq/dotnet-xml
fonte
Veja esta postagem do blog
fonte
XslCompiledTransform
usaXPathNavigator
para representação de nó, e o último implementa totalmente o XDM, você pode realmente implementar todas as funcionalidades XPath2 (como operadores<<
e>>
) como funções personalizadas em cima disso.Meu entendimento é que muitos recursos Microsoft XML foram desviados de XSLT 2.0 para LINQ to XML, que - na minha opinião - não aborda o mesmo espaço de problema que o XSLT.
O LINQ to XSD deveria aprimorar o LINQ to XML (assim como os benefícios do XML Schema, a sintaxe é menos feia), mas foi disponibilizado pela Microsoft para o CodePlex há algum tempo e parece não ter suporte da comunidade.
Além disso, é improvável que a Microsoft lance um novo processador XSLT 2.0 sem um editor e depurador XSLT 2.0 integrado ao Visual Studio, então um pouco de esforço / tempo seria necessário para reverter sua decisão de 'não adoção'.
Portanto, em vez disso, temos o Saxon.NET, que tem uma reputação de conformidade de padrões inatacável e oferece excelentes opções de extensibilidade para .NET.
fonte
A Microsoft não tem planos de lançar suporte para XPath / XSLT 2.0 em .NET.
XQSharp fornece uma implementação de terceiros de XPath 2.0, XSLT 2.0 e XQuery para .NET.
[editar: XQSharp 2.0 beta (com XSLT 2.0) foi lançado]
fonte
Eu não posso acreditar que eles não estarão em algum estágio, já que são tecnologias centrais do W3C. No entanto, não consigo encontrar nenhuma referência atual a eles (apenas informações postadas há muito tempo).
Em um futuro próximo, você deve dar uma olhada no Saxon, que suporta as versões Xpath / XSLT de que você precisa.
fonte