2009-05-19 12 views
2

Je tente d'analyser un document XML par rapport à une feuille XSLT 2.0. Cependant, on me dit que les bibliothèques sous OSX 10.5.x ne supportent que les opérations XSLT 1.0. Quand je regarde xsltproc, je reçois ceci:xslt 2.0 et Ruby sur OS X

hmasing $ xsltproc --version En utilisant libxml 20616, 10112 et libxslt libexslt 810 xsltproc a été compilé libxml 20616, 10112 et libxslt libexslt 810 libxslt 10112 a été compilé libxml 20616 libexslt 810 a été compilé contre libxml 20616

Est-ce que quelqu'un a un guide concis pour installer XSLT 2.0, les gems de ruby ​​xslt pour travailler contre ces libs, et quelques bonnes fu pour passer mon chemin? S'il vous plaît supposer que je suis un idiot total dans toutes les instructions. Toute aide est grandement appréciée!

  • Hans
+0

Il s'avère que l'utilisation de saxon (l'analyseur java XSLT) à partir de la ligne de commande via «système» et la capture de la sortie peut fonctionner, mais il est lent. Donc, je suppose que c'est un moyen, mais pas idéal dans des circonstances de performance. –

Répondre

5

Malheureusement, Saxon est le seul jeu en ville avec une implémentation XSLT 2.0 libre. Saxon lui-même est génial, mais c'est Java ou .NET seulement, avec tout ce que cela implique.

L'appeler depuis la ligne de commande ou via un appel système entraîne un coût de démarrage de la machine virtuelle Java à chaque fois, donc vous ne voulez probablement pas le faire.

Certaines choses que vous pouvez essayer:

1) Etes-vous sûr que vous avez besoin XSLT 2.0? Sauf si vous utilisez des fonctionnalités qui ne sont pas dans la version 1.0, votre XSLT peut être compatible avec la version 1.0. Ensuite, vous pouvez utiliser xsltproc. Si ce dont vous avez besoin est en EXSLT, xsltproc a un support pour cela.

2) Si vous avez absolument besoin de la version 2.0, vous devez créer une sorte de wrapper pour saxon. Beaucoup dépend de l'environnement dans lequel vous voulez l'utiliser, il peut s'agir d'un service web ou quelque chose comme ça. Pour un projet sur lequel je travaille, nous utilisons un petit programme d'écoute TCP qui enveloppe saxon. Vous pouvez le voir ici: http://idp.atlantides.org/svn/idp/idp.contenttool/trunk/epiduke_saxon/ Il fonctionne bien pour les transformations par lots en ligne de commande, et est très rapide.

+0

Java ne devrait pas techniquement être un problème sur OSX. N'y at-il pas une sorte de couche Java intégrée sur le système qui devrait au moins aider à la vitesse? –