1. Transformação XSLT 2.0 com Apache Camel

    Transformação XSLT, ao meu ver, foi um dos melhores mecanismos feitos para trabalhar e manipular conteúdos XML. O Apache Camel mantém um componente para transformação XSLT no pacote camel-spring escrito sobre a biblioteca Xalan, também da Apache.

    E seria tudo perfeito exceto pelo fato de que o camel-spring não implementa a especificação 2.0 do XSLT. Diante disso, devemos agradecer a Deus pelo autor do camel-spring conhecer orientação a objetos e permitir trocar TransformerFactory padrão do componente por outra que implemente XSLT 2.0. Eu sugiro Saxon: adotado por diversos programas de edição XML e afins como o famoso Stylus Studio, sem falar que sua implementação prevê a especificação XSLT 2.0, XQuery 1.0 e XPath 2.0.

    Mas vamos deixar o momento Discovery Channel de lado e vamos aos códigos: abaixo segue uma classe abstrata com o mesmo nome da classe mantida pela Apache que tem como finalidade substituir a implementação default de XSLT pelo Saxon, evitando reescrever parte da lógica do seu código Camel.

    package dev.agilemonkeys.camel;
    
    import net.sf.saxon.TransformerFactoryImpl;
    
    import org.apache.camel.CamelContext;
    import org.apache.camel.component.xslt.XsltComponent;
    import org.apache.camel.converter.jaxp.XmlConverter;
    
    public abstract class RouteBuilder extends
    		org.apache.camel.builder.RouteBuilder {
    
    	@Override
    	public void setContext(CamelContext context) {
    		super.setContext(context);
    		configureXsltComponent(context);
    	}
    
    	public void configureXsltComponent(CamelContext context) {
    		XsltComponent xsltComponent = getContext().getComponent("xslt", XsltComponent.class);
    		XmlConverter xmlConverter = new XmlConverter();
    		xmlConverter.setTransformerFactory(new TransformerFactoryImpl());
    		xsltComponent.setXmlConverter(xmlConverter);
    	}
    }
    

    Você não deve esquece de adicionar ao seu projeto Maven as bibliotecas do camel-saxon.


    Good Code Monkyes!

    2 years ago  /  Notes