2010-03-12 130 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