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**);

JenaFrameworkによって提供されます...Sesameについても同様です

ありがとう、エンツォ

4

1 に答える 1

0

デフォルトのSesameSPARQLResultsXMLWriterには、このためのオプションがありません。ただし、カスタマイズはかなり簡単なはずです。あなたがする必要があるのは、クラスのサブクラスを作成することです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に提供し、スタイルシート参照を正しい値に設定します。

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

SPARQLResultsXMLWriter sparqlWriter = new SPARQLResultsXMLWriter(writer);

テストされていませんが、これが機能することをかなり確信しています。

または、Sesameプロジェクトで機能リクエストを発行するか、パッチを提供します。

于 2011-10-12T03:45:58.450 に答える