X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=support%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fxml%2FXslTransformer.java;h=640aece320e28e3b9a9bc853dd0399cf186854a3;hb=ddd261f331280640c5b53c7128230b629ebcd268;hp=0e9ffee48867d0fa81cd6bacc1e1f0e20899025c;hpb=92e23e5ecf9614f2ab770a8cdedc0b21ddf1e127;p=utils diff --git a/support/general/src/main/java/org/wamblee/xml/XslTransformer.java b/support/general/src/main/java/org/wamblee/xml/XslTransformer.java index 0e9ffee4..640aece3 100644 --- a/support/general/src/main/java/org/wamblee/xml/XslTransformer.java +++ b/support/general/src/main/java/org/wamblee/xml/XslTransformer.java @@ -1,21 +1,24 @@ /* * 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 org.w3c.dom.Document; + +import org.wamblee.io.FileResource; + import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; @@ -33,8 +36,6 @@ import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; -import org.w3c.dom.Document; -import org.wamblee.io.FileResource; /** * XSL transformer for simplified usage of XSL transformations. @@ -42,12 +43,14 @@ import org.wamblee.io.FileResource; * @author Erik Brakkee */ public class XslTransformer { - + /** + * DOCUMENT ME! + */ private TransformerFactory factory; - /** +/** * Constructs the URL resolver. - * + * * @param aResolver * URI resolver to use. */ @@ -56,121 +59,124 @@ public class XslTransformer { factory.setURIResolver(aResolver); } - /** +/** * Constructs the XSLT processor. - * + * */ public XslTransformer() { factory = TransformerFactory.newInstance(); } /** - * Resolves an XSLT based on URI. - * @param aXslt XSLT to resolve, + * Resolves an XSLT based on URI. + * + * @param aXslt XSLT to resolve, + * * @return Source for the XSLT - * @throws TransformerException In case the XSLT cannot be found. + * + * @throws TransformerException In case the XSLT cannot be found. */ public Source resolve(String aXslt) throws TransformerException { URIResolver resolver = factory.getURIResolver(); + if (resolver == null) { if (new File(aXslt).canRead()) { try { return new StreamSource(new FileResource(new File(aXslt)) - .getInputStream()); + .getInputStream()); } catch (IOException e) { throw new TransformerException(e.getMessage(), e); } } else { - throw new TransformerException("Cannot read '" + aXslt + "'"); + throw new TransformerException("Cannot read '" + aXslt + "'"); } } + return resolver.resolve(aXslt, ""); } /** - * Transforms a DOM document into another DOM document using a given XSLT - * transformation. - * - * @param aDocument - * Document to transform. - * @param aXslt - * XSLT to use. + * 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. - * @throws IOException - * In case of problems reading resources. - * @throws TransformerException - * In case transformation fails. + * + * @throws IOException In case of problems reading resources. + * @throws TransformerException In case transformation fails. */ public Document transform(Document aDocument, Source aXslt) - throws IOException, TransformerException { - Source source = new DOMSource(aDocument); + throws IOException, TransformerException { + Source source = new DOMSource(aDocument); DOMResult result = new DOMResult(); transform(source, result, aXslt); + return (Document) result.getNode(); } /** * Transforms a document using XSLT. - * - * @param aDocument - * Document to transform. - * @param aXslt - * XSLT to use. + * + * @param aDocument Document to transform. + * @param aXslt XSLT to use. + * * @return Transformed document. - * @throws IOException - * In case of problems reading resources. - * @throws TransformerException - * In case transformation fails. + * + * @throws IOException In case of problems reading resources. + * @throws TransformerException In case transformation fails. */ public Document transform(byte[] aDocument, Source aXslt) - throws IOException, TransformerException { - Source source = new StreamSource(new ByteArrayInputStream(aDocument)); + throws IOException, TransformerException { + Source source = new StreamSource(new ByteArrayInputStream(aDocument)); DOMResult result = new DOMResult(); transform(source, result, aXslt); + return (Document) result.getNode(); } /** * Transforms a document to a text output. This supports XSLT * transformations that result in text documents. - * - * @param aDocument - * Document to transform. - * @param aXslt - * XSL transformation. + * + * @param aDocument Document to transform. + * @param aXslt XSL transformation. + * * @return Transformed document. + * + * @throws IOException DOCUMENT ME! + * @throws TransformerException DOCUMENT ME! */ public String textTransform(byte[] aDocument, Source aXslt) - throws IOException, TransformerException { - Source source = new StreamSource(new ByteArrayInputStream(aDocument)); - ByteArrayOutputStream os = new ByteArrayOutputStream(); - StreamResult result = new StreamResult(os); + throws IOException, TransformerException { + Source source = new StreamSource(new ByteArrayInputStream( + aDocument)); + ByteArrayOutputStream os = new ByteArrayOutputStream(); + StreamResult result = new StreamResult(os); transform(source, result, aXslt); + return new String(os.toByteArray()); } /** * Transforms a document using XSLT. - * - * @param aSource - * Document to transform. - * @param aResult - * Result of the transformation. - * @param aXslt - * XSLT to use. - * @throws IOException - * In case of problems reading resources. - * @throws TransformerException - * In case transformation fails. + * + * @param aSource Document to transform. + * @param aResult Result of the transformation. + * @param aXslt XSLT to use. + * + * @throws IOException In case of problems reading resources. + * @throws TransformerException In case transformation fails. */ public void transform(Source aSource, Result aResult, Source aXslt) - throws IOException, TransformerException { + throws IOException, TransformerException { try { Transformer transformer = factory.newTransformer(aXslt); transformer.transform(aSource, aResult); } catch (TransformerConfigurationException e) { - throw new TransformerException( - "Configuration problem of XSLT transformation", e); + throw new TransformerException("Configuration problem of XSLT transformation", + e); } } }