Нужно используя Xerces обьеденить xml с xsl, а на выходе получить html.
В JPS используеться bean, в котором я создаю экземпляр класса Kernel, затем вызываю метод getHTML() который должен вернуть HTML-код.
Работаю под JBuilder 7
Tomcat-4.0.3
Подключаю к проекту нужные либы:
тоесть
xalan.jar
xml-apis.jar
xercesImpl.jar
Вот во время запуска проекта, вылетают два эксепшина:
javax.servlet.ServletException: javax/xml/transform/TransformerFactoryConfigurationError
и
java.lang.NoClassDefFoundError: javax/xml/transform/TransformerFactoryConfigurationError
Тестировал семпл из ксалановского пакета SempleTranform, сделан в виде приложения.
Используються такие-же куски кода (то-есть я его от-туда выдрал вставил в свой проект и чуть-чуть переделал
вот они:
...
...
StringWriter writer = new StringWriter();
try {
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new StreamSource( new StringReader(xsl) ));
transformer.transform(new StreamSource( new StringReader(out) ), new StreamResult( writer ));
}
catch (TransformerException ex) {
}
catch (TransformerFactoryConfigurationError ex) {
}
Sysstem.out(writer.toString());
...
...
). Все работает!!!
Вот уже 3 день не могу понять в чем мой глюк, ПОМОГИТЕ КТО МОЖЕТ пожалуйста!
Код класса Kernel:
package forum.engine;
import forum.database.DBConnector;
import java.util.ArrayList;
import java.util.Iterator;
import forum.database.Category;
import forum.database.Forum;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.ErrorListener;
import java.util.Properties;
public class Kernel {
private DBConnector connector = null;
public Kernel() {
connector = new DBConnector();
}
public synchronized String getHTML(){
String out = "........"; //Здесь XML контент
String xsl = "........"; //Здесь XSL контент
StringWriter writer = new StringWriter();
try {
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new StreamSource( new StringReader(xsl) ));
transformer.transform(new StreamSource( new StringReader(out) ), new StreamResult( writer ));
}
catch (TransformerException ex) {
}
catch (TransformerFactoryConfigurationError ex) {
}
return writer.toString();
}
}
Код бина:
package forum.beans;
import forum.database.DBConnector;
import forum.database.User;
import java.util.ArrayList;
import forum.database.Category;
import forum.database.Forum;
import forum.database.Theme;
import forum.database.Message;
import forum.engine.Kernel;
import org.apache.xalan.xslt.EnvironmentCheck;
import java.io.PrintWriter;
import java.io.StringWriter;
public class indexBean {
private String text = "";
Kernel kernel = new Kernel();
public void setText(String text){
this.text = text;
}
public String getText(){
return kernel.getHTML();
}
}
Код JSP:
<%@ page contentType="text/html; charset=windows-1251" %>
<html>
<jsp:useBean id="indexBeanId" scope="session" class="forum.beans.indexBean" />
<jsp:setProperty name="indexBeanId" property="*" />
<body>
<jsp:getProperty name="indexBeanId" property="text" />
</body>
</html>