Нужна помощь с использованием Saxon-B (версия 9.1.0.8) с Java 1.4.2

Мне нужно преобразовать один XML-документ в другой с помощью XSLT (пока из командной строки). Мне нужно использовать Java 1.4.2. Исходя из этого, кто-то рекомендовал использовать Saxon и предоставил XSLT. Кажется, это должно работать, но я заблудился.
Я больше пришел из среды .NET, работал с XML и XSLT, но не с Saxon, и я не так силен в Java.

Позвольте мне начать с объяснения, в чем моя проблема и что я пробовал до сих пор:
Ошибка:
C:\Projects\new_saxon_download>java net.sf.saxon.Transform -s:source.xml -xsl:style.xsl -o:output.xml
Exception in thread "main" java.lang.NoClassDefFoundError: org/xml/sax/ext/DefaultHandler2

        at net.sf.saxon.Configuration.(Configuration.java:2047)
        at net.sf.saxon.Transform.setFactoryConfiguration(Transform.java:81)
        at net.sf.saxon.Transform.doTransform(Transform.java:133)
        at net.sf.saxon.Transform.main(Transform.java:66)

Шаги, которые привели меня сюда:

  1. Я загрузил Saxon-B, перейдя по ссылке с этой страницы
  2. Я также нашел некоторую информацию о зависимости от SAX2 на этой странице и таким образом получилось и это.
  3. Установите CLASSPATH в моем сеансе:
    set CLASSPATH=.;C:\Projects\new_saxon_download\saxon9.jar;C:\Projects\new_saxon_download\sax2r2.jar
  4. Пробовали преобразование:
    java net.sf.saxon.Transform -s:source.xml -xsl:style.xsl -o:output.xml

Затем я получаю сообщение об ошибке, показанное выше. Я пробовал несколько поисковых запросов в Google, но ничего не помогло.

Любой совет или решение были бы очень полезны.


person Pranav Shah    schedule 11.08.2011    source источник
comment
Вы пробовали добавить -cp в командную строку java? (java -cp %CLASSPATH% net.sf.saxon.Transform -s:source.xml -xsl:style.xsl -o:output.xml)   -  person Daniel Haley    schedule 12.08.2011
comment
@DevNull Пробовал ваше предложение, но все та же ошибка.   -  person Pranav Shah    schedule 12.08.2011


Ответы (1)


ПОЛУЧИЛСЯ - описание того, как исправить проблему с зависимостью, - чушь (извините).

Этот файл sax2r2.jar не тот, который вам нужно добавить в путь к классам. Он содержит еще одну банку (sax.jar) и именно ту библиотеку, которая вам действительно нужна. Просто извлеките sax2r2.jar и поместите sax.jar в путь к классам, тогда он должен работать.


Попробуйте: apache xml-commons включает xml-api.jar. Я не могу сказать, можно ли это использовать с java 1.4.12, но попробовать стоит.

Можно найти двоичные выпуски здесь. Загрузите один из xml-commons-external архивов, извлеките xml-api.jar и добавьте его в свой путь к классам.

person Andreas Dolk    schedule 11.08.2011
comment
Знаете ли вы, где должен быть sax.jar, который правильно работает с этой версией? У меня нет этого файла. - person Pranav Shah; 11.08.2011
comment
Как я уже сказал, он внутри sax2r2.jar. jar - это простой zip-архив, просто распакуйте (разархивируйте), и вы его найдете! - person Andreas Dolk; 12.08.2011
comment
Andreas_D - это проблема только с java-версией? У меня нет проблем с зависимостями при использовании saxon9. - person Daniel Haley; 12.08.2011
comment
Неважно. Я вижу в OP ссылку на sourceforge.net/tracker/ что это связано с версией java. - person Daniel Haley; 12.08.2011
comment
@Andreas_D Выполнил извлечение, изменил путь к классам, но все равно получил ошибку. (FYI - для кого-то вроде меня, кто не разбирается в java, вам понадобится jar.exe для извлечения) - person Pranav Shah; 12.08.2011
comment
Кроме того, на основании последнего комментария к sourceforge эта проблема не была исправлена. с этим файлом. - person Pranav Shah; 12.08.2011
comment
@Andreas В комментарии xml-commons вы хотели написать xml-apis.jar вместо xml-api.jar - person Pranav Shah; 12.08.2011