1

如何在 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 提供......芝麻的类似物

谢谢,恩佐

4

1 回答 1

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 并将样式表引用设置为正确的值:

MyXMLWriter writer = new MyXMLWriter(out);
writer.setStylesheetRef("example.xsl");

SPARQLResultsXMLWriter sparqlWriter = new SPARQLResultsXMLWriter(writer);

未经测试,但相当有信心这应该有效。

或者,向 Sesame 项目提出功能请求和/或向他们提供补丁。

于 2011-10-12T03:45:58.450 回答