如何在SPARQLResultsXMLWriter提供的XML输出流中添加xsl样式表?
RepositoryConnection con = repository.getConnection();
SPARQLResultsXMLWriter sparqlWriter = new SPARQLResultsXMLWriter(out);
try {
TupleQuery query = con.prepareTupleQuery(org.openrdf.query.QueryLanguage.SPARQL, qs);
query.evaluate(sparqlWriter);
}
finally {
con.close();
}我在找这样的东西,
com.hp.hpl.jena.query.ResultSetFormatter.outputAsXML(outStream,resulSet,**xslFilePath**);由Jena Framework提供...芝麻的相似之处
谢谢,恩佐
发布于 2011-10-12 11:45:58
默认的Sesame SPARQLResultsXMLWriter没有此选项。但是,自定义它应该相当容易。您需要做的是创建info.aduna.xml.XMLWriter类的子类(这是SPARQLResultsXMLWriter内部使用的、格式正确的XML的实用程序类)。在这个子类中,添加一个getter/setter来指定样式表链接,然后覆盖startDocument方法,如下所示:
public class MyXMLWriter extends info.aduna.xml.XMLWriter {
@Override
public void startDocument() throws IOException {
super.startDocument();
_write("<?xml-stylesheet type=\"text/xsl\"");
_write(" href=\"" + getStylesheetRef() + "\"");
_writeLn("?>");
}
}然后,只需将这个自定义的XMLWriter提供给您的SPARQLResultsXMLWriter,并将样式表ref设置为正确的值:
MyXMLWriter writer = new MyXMLWriter(out);
writer.setStylesheetRef("example.xsl");
SPARQLResultsXMLWriter sparqlWriter = new SPARQLResultsXMLWriter(writer);未经测试,但相当有信心这应该是可行的。
或者,使用Sesame项目提出功能请求,并/或为他们提供补丁。
https://stackoverflow.com/questions/7724937
复制相似问题