Fala ae pessoal tudo bom!?!?
Venho humildemente pedir ajuda, pois estou com o seguinte problema:
Preciso fazer um site e tenho a intenção de desde o começo criar uma arquitetura que facilite a internacionalização do mesmo. Então fiz da seguinte forma:
- Separei o que era texto de layout, como?
Montei um XML com texto do conteudo, dos menus e etc.
Montei um fragmentos de XSL para transformar cada pequeno XML(Exemplificando, tenho um xml com o texto do menu, outro com o do conteúdo…)
Chega de enrolar, vamos ao problema.
Como eu preciso transformar todos estes fragmentos de xml através do xsl para exibir o resultado html em minha página jsp, eu estou usuando a seguinte classe:
import java.io.File;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
public class XMLTransformer {
public static void transform(File xmlFile, File xsltFile) {
if(!xmlFile.isFile()){
throw new IllegalAccessError("O arquivo " + xmlFile.getName() + " não existente no local especificado. " +
xmlFile.getAbsolutePath());
}else if(!xsltFile.isFile()){
throw new IllegalAccessError("O arquivo " + xsltFile.getName() + " não existente no local especificado. " +
xsltFile.getAbsolutePath());
}
Source xmlSource = new StreamSource(xmlFile);
Source xsltSource = new StreamSource(xsltFile);
TransformerFactory transFact = TransformerFactory.newInstance();
try {
Templates cachedXSLT = transFact.newTemplates(xsltSource);
Transformer trans = cachedXSLT.newTransformer();
trans = transFact.newTransformer(xsltSource);
trans.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
trans.setOutputProperty(OutputKeys.INDENT, "yes");
trans.setOutputProperty(OutputKeys.METHOD, "html");
trans.transform(xmlSource, new StreamResult(System.out));
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
}
}
Dois problemas:
1 - Os arquivos que eu passo para o método estão no mesmo diretório que index.jsp (na raiz de WebContent) porém ao usar o método “isFile()” dentro do método “transform()”, é gerada a exceção, ou seja, o arquivo não é encontrado. E ao ver o absolutePath() do objeto File em questão, percebi que está sendo feito um tentativa de encontrar um aquivo em “c:\eclipse”. Não entendo porque, pois usando o caminho absoluto do arquivo, consigo vizualizar a saida do html no console.
2 - Gostaria de ao invés de StreamResult usar System.out, de alguma forma fosse possível retornar um String ou StringBuilder deste método?
Desde já estou muito grato a todos pois estou sempre aprendendo com vocês!!! Abraços e até logo!