Преобразование Xalan XSD занимает слишком много времени

Я пытаюсь использовать инструмент подмножества GML XSLT для преобразования схемы GML XSD. Платформа — Windows 7 32-битная.

Он застревает на первой команде (не менее 10 часов на моем рабочем столе):

>xalan -o gml.dep gml.xsd depends.xslt

Есть ли вариант, который ускорит преобразование с учетом схемы?

Опробованные альтернативные инструменты: Saxon HE, Altova XMLSpy. У обоих закончилась память в схеме GML.

РЕДАКТИРОВАТЬ: Еще несколько фактов:

  1. Версия GML – 3.2.1.
  2. Инструменты GML XSLT Subset взяты из Приложения G к спецификации.
  3. Инструменты XSLT используют XSLT версии 1.0.

person lsdavies    schedule 14.10.2014    source источник
comment
Xalan — это процессор XSLT 1.0, а Saxon HE — процессор XSLT 2.0, но не поддерживающий схему, так почему же вы спрашиваете об опции, которая ускорит преобразование с учетом схемы? Простая обработка схемы XSD в качестве входных данных не является обработкой с учетом схемы. Что касается проблемы с памятью, то в приложении Java есть параметры командной строки для увеличения объема памяти, см. docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html. Насколько велик этот входной документ, какую память вы предоставили приложению Java при запуске Saxon?   -  person Martin Honnen    schedule 14.10.2014


Ответы (1)


Решение проблем с производительностью требует подробностей, а вы не предоставили никаких подробностей. Во-первых, насколько велик исходный документ (то есть схема GML) и сколько памяти вы выделяете?

Учитывая, что вы пытаетесь обрабатывать файлы XSD в качестве входных данных, а это обычно сложная задача, я полагаю, что основная проблема заключается в алгоритмической сложности таблицы стилей. Такого рода проблемы часто можно решить с помощью разумного использования ключей.

Я был бы удивлен, если бы размер схемы GML превышал несколько мегабайт, поэтому проблема с памятью вряд ли связана просто с размером исходного документа; скорее всего, это временные структуры данных, созданные в самой таблице стилей. Но решить эту задачу без доступа к коду невозможно.

person Michael Kay    schedule 14.10.2014
comment
Привет, Майкл! Для меня большая честь, что создатель Saxon ответил на мой вопрос! Спасибо. Схема GML действительно занимает всего ~400 КБ на диске, но я подозреваю, что она включает онлайн-схемы. Инструмент подмножества XSLT находится в Приложении G к спецификации 3.2.1, как я отметил выше, но для справки я включил все файлы xsd и xslt GML здесь: ссылка. Команда, которую я использовал в SaxonEE, была ›Transform -o:gml.dep gml.xsd depend.xslt - person lsdavies; 15.10.2014
comment
Я не собираюсь заниматься этим сегодня, и у меня нет возможности помечать сообщения SO для дальнейшего внимания, поэтому, пожалуйста, отправьте это как запрос в службу поддержки на saxonica.plan.io. - person Michael Kay; 15.10.2014