Есть ли способ привязки Java-объекта в области видимости JAXP или Xalan XSLT? - PullRequest
0 голосов
/ 18 августа 2011

Xalan-J позволяет нам создавать и манипулировать объектами java , используя механизм расширения.Я хочу передать уже созданный объект из Java (из JVM, вызывающей Xalan), а затем манипулировать этим объектом из xslt.

Например, я хотел бы сделать что-то вроде этого:

Transformer transformer = tFactory.newTransformer(new StreamSource(xsl));
HashMap mymap = ...
transformer.setParameter("MapToBeManipulatedByXsl", mymap);
transformer.transform(...)
String fromXSL = mymap.get("some-key-added-by-xsl");

Возможно ли это?

1 Ответ

2 голосов
/ 19 августа 2011

Это не совсем тот уровень интеграции, который вы получаете с Xalan-J, но, безусловно, самый простой способ манипулирования объектами Java с XSL, с которым я имел дело, - это использовать JAXB для превращения объектов в / из XML.

JAXB позволяет вам аннотировать ваши объекты Java с помощью тегов, определяющих, как вы хотите, чтобы они отображались в их эквивалентном XML-документе, а затем выполняет всю работу по переводу Java-to-XML и XML-to-Java. Возьмите ваш Java-объект, запустите его через JAXB, запустите XSL поверх него, затем снова запустите его через JAXB, чтобы вернуть Java-объект.

Преимущества этой техники включают в себя:

  • Вы не привязаны к определенной среде XSL или интерпретатору. Ваш XSL работает только на XML.
  • Перевод с Java на XML и обратно является основной частью JRE, и не требует никаких сторонних библиотек
  • Вы можете тестировать свои XSL независимо от Java. среда приложения, передавая текстовые файлы и проверяя выход
...