Witam,
mam dziwny problem. Miałem napisany serwlet przetwarzający xml przez interfejs saxon i wszystko było ok, generował wynik, i nagle przestało działać po edycji ręcznej.. pliku xml, który był zaczytywany. Zmieniłem tylko dwie wartości, które miały być wyświetlane i serwlet wyświetla pustą stronę. W czasie zmiany pliku xml Tomcat był uruchomiony, ale wydaje mi się, że to nie powinno mieć znaczenia, a jeśli nawet, to po restarcie Tomcata wszystko powinno wrócić do normy..
wkleje kody
- plik xml:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<?xml-stylesheet type="text/xsl" href="lab73.xsl" ?>
<DATA>
<PERSON ID="1">
<NAME>player1</NAME>
<POINT>4</POINT>
</PERSON>
<PERSON ID="2">
<NAME>player2</NAME>
<POINT>3</POINT>
</PERSON>
<PERSON ID="3">
<NAME>player3</NAME>
<POINT>6</POINT>
</PERSON>
<PERSON ID="4">
<NAME>player4</NAME>
<POINT>7</POINT>
</PERSON>
</DATA>
- plik xq:
<html>
<head>
<title>A list of books</title>
</head>
<body>
<h1>A list of books</h1>
<ul>
{
for $b in //DATA/PERSON
order by $b/POINT ascending
return
<li><i> { string($b/NAME) } </i> by { string($b/PIONT) } </li>
}
</ul>
</body>
- kod serwletu:
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import net.sf.saxon.Configuration;
import net.sf.saxon.query.DynamicQueryContext;
import net.sf.saxon.query.StaticQueryContext;
import net.sf.saxon.query.XQueryExpression;
import net.sf.saxon.trans.XPathException;
/**
* Servlet implementation class SerwletXQuery
*/
public class SerwletXQuery extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SerwletXQuery() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
try {
Configuration config = new Configuration();
// --- UTWORZENIE ZAPYTANIA XQUERY ---
StaticQueryContext sqc = new StaticQueryContext(config);
XQueryExpression exp = sqc.compileQuery(new FileReader("C:\\kernow\\lab82.xq"));
// --- ZAŁADOWANIE PLIKU XML ---
DynamicQueryContext dynamicContext = new DynamicQueryContext(config);
dynamicContext.setContextItem(config.buildDocument(new StreamSource("C:\\kernow\\lab82.xml")));
// --- USTAWIENIE WLASCIWOSCI WYNIKU ---
Properties props = new Properties();
props.setProperty(OutputKeys.METHOD, "html");
props.setProperty(OutputKeys.DOCTYPE_PUBLIC, "-//W3C//DTD HTML 4.01 Transitional//EN");
props.setProperty(OutputKeys.ENCODING, "UTF-8");
// --- przetworzenie zapytania ---
exp.run(dynamicContext, new StreamResult(response.getWriter()), props);
} catch (XPathException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
Mam nadzieje, że ktoś pomoże...