2017-05-12 47 views
0

根據PythonCentral如何使用的PyQt的QWebView顯示XML witl XSLT應用

QWebView ......讓您顯示來自網址的網頁,任意的HTML,XML 用XSLT樣式表,網頁構造爲QWebPages,和其它數據,其MIME類型它知道如何解釋

然而,顯示XML內容,如同其被解釋爲HTML,也就是,標籤過濾掉並示出的textnodes W/O型換行符。

問題是:如何在應用了xsl樣式表的QWebView中顯示xml?

在任何獨立的webbrowser中打開的相同xml文件顯示正常。由轉換後的xml(通過lxml.etree)生成的html文件在QWebView中也很好地顯示。

這裏是我的(略)的XML文件:

<?xml version='1.0' encoding='UTF-8'?> 
<?xml-stylesheet type="text/xsl" href="../../page.xsl"?> 
<specimen> 
    ... 
</specimen> 

回答

0

OK,我找到了解決方案的一部分。這是一個使用QXmlQuery的多步驟方法:

path = base + "16000-16999/HF16019" 

xml = os.path.join(path, "specimen.xml") 
xsl = os.path.join(path, "../../page.xsl") 

app = QApplication([]) 

query = QXmlQuery(QXmlQuery.XSLT20) 
query.setFocus(QUrl("file:///" + xml)); 
query.setQuery(QUrl("file:///" + xsl)); 
out = query.evaluateToString(); 

win = QWebView() 
win.setHtml(out); 
win.show() 
app.exec_() 

很明顯,xslt是以這種方式應用的。還有一個錯誤是xslt中引用的CSS樣式表沒有被應用/找到。

+0

我真的很喜歡這個獨白! – user508402