【发布时间】:2018-03-23 09:36:27
【问题描述】:
XSLT 示例
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" encoding="UTF-8"/>
<xsl:param name="my-param" select="'none'"/>
<xsl:template match="sample">
<html><body><p>
parameter: <xsl:value-of select="$my-param"/>
</p></body></html>
</xsl:template>
示例 XML:
<sample/>
像这样使用xmlpatterns:
xmlpatterns sample.xsl sample.xml -param my-param=funky
我可以让 HTML 输出读取:
<html><body><p>
parameter: funky</p></body></html>
太棒了!
问:如何使用 QXmlQuery 将my-param 传递给我的 XSLT?
我怀疑它一定是bindVariable() 重载之一,但似乎没有一个与简单字符串参数匹配。
如果重要,请提供其他信息: 我们仍在工作中使用Qt4.7。 但是在互联网上快速浏览了一下,QXmlQuery 的公共接口在Qt 5.x 中似乎没有什么不同
编辑
到目前为止我所拥有的:
QString output;
QXmlQuery query(QXmlQuery::XSLT20);
query.setFocus(QUrl(input_xml));
query.setQuery(QUrl::fromLocalFile(":/sample.xsl"));
query.evaluateTo(&output);
我使用 QXmlQuery::XSLT20 是因为即使我的 XSLT 是针对 1.0 版,它也不会让我感到头疼(以防万一这让您感到困惑)
【问题讨论】:
-
doc.qt.io/qt-5/xmlprocessing.html#qtxdm 看来你可以通过 QVariants 来绑定。它隐式地从变体构造一个 QXmlItem。