2010-03-12 132 views
4

我喜歡在使用QtWebKit的Qt應用程序中顯示一些(X)HTML內容。 內容應該通過XSLT從XML文檔生成。使用Qt處理XSLT

由於我是Qt新手,我的問題如下:
1)QtWebKit可以使用xml-stylesheet元素設置來顯示XML文檔嗎?
2)Qt可以將XSLT應用於XML文檔並將結果作爲字符串返回或將其寫入文件?

回答

0

QtWebKit和xslt總是分離的,將它們組合起來總是一個待辦事項 - 不知道當前狀態是什麼,但是您可以通過示例輕鬆進行測試。

或者遵循http://labs.trolltech.com/blogs/2010/03/03/qtwebkit-releases/

+0

我今天試過Qt的瀏覽器演示。如果設置了xml-stylesheet元素,它能夠應用XSLT,但似乎無法動態設置元素而不更改基礎xml數據。 – swegi 2010-03-15 14:33:17

10

隨着QXmlQuery,你可以對一個XSL模板處理XML文檔,然後將結果傳遞給QWebView::setHtml(QString)(最新版本的Qt將使用QWebEngineView::setHtml(..)

QString out; 
QXmlQuery query(QXmlQuery::XSLT20); 
query.setFocus(QUrl("myInput.xml")); 
query.setQuery(QUrl("myStylesheet.xsl")); 
query.evaluateTo(&out); 
webview->setHtml(out); 

你可以找到這段代碼和更多的信息在QXmlQuery documentation

+0

QXmlQuery可以解析嵌入在XML文件中的xsl鏈接而不是調用setQuery嗎?我的意思是,在代碼片段中,如果「myInput.xml」包含指向XSL文件的鏈接,並且XSL文件還包含以遞歸方式引用其他XSL文件,那麼QXmlQuery如何應用於加載所有樣式表?可能它已經這樣做了?或者是setQuery始終需要? (在這種情況下,應該掃描XML和XSL文件以構建依賴樹或類似的東西)。 – Claudix 2013-01-07 17:13:24

+0

@Claudix,如果您的問題仍然有效,請考慮[將其作爲新問題](http://stackoverflow.com/questions/ask)。是的,這是可能的。 – Abel 2015-09-10 11:11:00