openrdf-сезам SPARQLResultsXMLWriter и XSL - PullRequest
       10

openrdf-сезам SPARQLResultsXMLWriter и XSL

1 голос
/ 11 октября 2011

как добавить таблицу стилей xsl в поток XML, предоставляемый SPARQLResultsXMLWriter?

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

Спасибо, Энцо

1 Ответ

0 голосов
/ 12 октября 2011

По умолчанию Sesame SPARQLResultsXMLWriter не имеет опции для этого.Тем не менее, это должно быть довольно легко настроить.Что вам нужно сделать, это создать подкласс класса info.aduna.xml.XMLWriter (который является служебным классом для правильно отформатированного XML, который внутренне используется SPARQLResultsXMLWriter).В этом подклассе добавьте метод получения / установки, чтобы указать ссылку на таблицу стилей, а затем переопределите метод 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 и / или предоставить им патч.

...