/* * Copyright 2005 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.wamblee.xml; import java.io.ByteArrayInputStream; import java.io.File; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMResult; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamSource; import org.w3c.dom.Document; /** * XSLT utilities. */ public class XSLT { /** * Transforms a DOM document into another DOM document using a given XSLT * transformation. * * @param aDocument * Document to transform. * @param aXslt * XSLT to use. * @return Transformed document. */ public static Document transform( Document aDocument, File aXslt ) { Source source = new DOMSource( aDocument ); DOMResult result = new DOMResult( ); transform( source, result, aXslt ); return (Document) result.getNode( ); } public static Document transform(byte[] aDocument, File aXslt ) { Source source = new StreamSource( new ByteArrayInputStream(aDocument) ); DOMResult result = new DOMResult( ); transform( source, result, aXslt ); return (Document) result.getNode( ); } /** * Transforms a DOM document into another DOM document using a given XSLT * transformation. * * @param aDocument * Document to transform. * @param aXslt * XSLT to use. * @return Transformed document. */ public static void transform( Source aSource, Result aResult, File aXslt ) { try { Source xslt = new StreamSource( aXslt ); Transformer transformer = TransformerFactory.newInstance( ) .newTransformer( xslt ); transformer.transform( aSource, aResult ); } catch ( TransformerConfigurationException e ) { throw new RuntimeException( "Configuration problem of XSLT transformation", e ); } catch ( TransformerException e ) { throw new RuntimeException( "Error transforming document", e ); } } }