如何在SPARQLResultsXMLWriter提供的XML out流中添加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提供......与Sesame相似
谢谢, 恩佐
答案 0 :(得分:0)
默认的Sesame SPARQLResultsXMLWriter没有此选项。但是,定制它应该相当容易。您需要做的是创建类info.aduna.xml.XMLWriter
的子类(这是一个正确格式化的XML的实用程序类,SPARQLResultsXMLWriter在内部使用它)。在这个子类中,添加一个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项目提出功能请求和/或为其提供补丁。