2014-11-15 9 views
-1

Я пытаюсь использовать Saxon для программной генерации XSLT. Это аналогичный вопрос Create xslt files programmatically, но поскольку на этот вопрос не было приемлемого ответа, я снова спрашиваю, в частности о Саксоне, который в какой-то момент утверждал, что поддерживает это.Как сгенерировать XSLT программно

Согласно http://saxon.sourceforge.net/saxon7.0/api-guide.html, «В этом документе описано, как использовать Saxon как библиотеку классов Java, без использования таблиц стилей XSLT».

(отвечая на другой вопрос, о котором я упоминал выше), а затем сериализуем его в таблицу стилей, которая затем может быть перезагружена и выполнена позже, но я уже довольно многое понял, что не произойдет.

Если Saxon не является ответом, то какая библиотека Java будет поддерживать любое из этого?

Кстати, все это и с использованием .Net тривиально. К сожалению, для этого мне нужно решение Java.

Любая помощь очень ценится.

+4

XSLT - это XML. Таким образом, генерация XSLT требует того же процесса, что и генерация XML. (Кроме того, если у вас есть рабочая версия .NET, что вы хотите сделать, пожалуйста, покажите ее. Без правильной спецификации этот вопрос слишком широк.) – Tomalak

ответ

1

Ну, для начала было выпущено 26 основных выпусков и бесчисленное техническое обслуживание Saxon начиная с версии 7.0, поэтому забудьте все, что вы там прочтете.

Неясно, хотите ли вы написать генератор кода XSLT на Java или в XSLT. Я не понимаю, почему вы хотите сделать это на Java, а не на XSLT, но это не сложно. Главная проблема с вашим вопросом заключается в том, что вы не объясните, почему вы считаете, что это проблема. Создание таблицы стилей XSLT подобно созданию любого другого документа XML: в чем проблема?

0

Я подумал об этом некоторое время назад и подумал, что поделюсь своим ответом. Это может быть или может быть ответом для Create xslt files programmatically, но, поскольку это не было моим вопросом, я не буду этого допускать.

Ответ заключается не в том, чтобы использовать XSLT (или саксон) вообще. Первоначально мне нужен API, с помощью которого можно было бы создать XSLT-модель, где программные преобразования для трансформации определенной (дробной) структуры дерева (xml) известны. Затем модель может быть сохранена в виде таблицы стилей, чтобы ее можно было перезагрузить и использовать для преобразования другого дерева с той же структурой снова. Конечно, я мог бы программно создать DOM, содержащий документ таблицы стилей XSLT, но зачем мне это хотеть? Это неэффективно для одного - создание и сохранение DOM со всем синтаксисом XSLT (утомительным), а затем чтение его с использованием SAXON и т. Д. Я бы предпочел иметь API, который изначально понимает XSLT - возможно, тот, у которого есть XSLT-модель, которая может просто быть запрограммированным, а затем сериализованным?

В любом случае, ответ на мою проблему - это просто использовать SAX. Поскольку я знаю конкретные правила преобразования для моего дерева программно, я просто создал обработчик, который обрабатывает поток, используя правила, и я закончил. В конце концов, нет таблицы стилей XSLT, которая может жить вне программы, но я буду жить с этим.

И я беру обратно то, что я сказал о .Net, поддерживающий мой первый подход. Я думал, что это будет просто напоминанием, чтобы проверить свои предположения перед отправкой.

Кстати, ответ на мой вопрос предполагает, что это было легко сделать, а не описать, как это сделать, меня просто спросили, зачем я этого хотел. Можем ли мы хотя бы попытаться ответить на вопрос, если мы также чувствуем, что нам нужно спросить кого-то, почему они задают вопрос?

+0

«Мы можем хотя бы попытаться ответить на вопрос, если мы также чувствуем, что нам нужно спросить кого-то, почему они задают вопрос?» «Я часто спрашиваю людей, почему они задают вопрос, чтобы я мог выяснить, какой ответ могут быть полезны для них. –

+0

Майкл, мой вопрос в том, может ли Saxon использоваться для генерации XSLT программно. В ответ мне сказали, что это легко, но без каких-либо подробностей. Мне также сказали, что XSLT - это всего лишь XML и генерировать его, как любой другой XML (опять же без подробностей, но предположительно через DOM, который не будет включать саксон. Поэтому ответ на мой вопрос должен быть я не догадываюсь). Если Saxon можно использовать для генерации XSLT, то детали будут приятными. Что касается проблемы, которую я решаю, я описал ее в своем собственном ответе. Я знаю, что структура должна быть преобразована программно и требуется простой программный способ ее преобразования. – Paul

+0

Я не думаю, что это хорошее место для обсуждения. Я просто комментировал, почему часто нужно понимать, откуда приходит человек, задающий вопрос. –