Qt文档说明使用QXmlQuery时支持for-each-group。然而,当我尝试使用它时,我得到一个错误:
"具有for-each-group本地名称的元素在XSL-T中不存在。"
我错过了什么吗?
我使用Qt 4.8.4。我像这样调用QXmlQuery:
QXmlQuery xmlQuery(QXmlQuery::XSLT20);
xmlQuery.setMessageHandler(&messageHandler);
xmlQuery.setFocus(&xmlBuffer);
xmlQuery.setQuery(&queryFile);
XSL文件中的这行如下所示:
<xsl:for-each-group select="../readings/slot" group-by="@slot_dtm">
谢谢。
在Qt 5.12中,这个问题仍然存在。看起来Qt根本不支持xsl:for-each-group
。这也是2013年一篇博客文章的结果,其中有人分析了这个问题。
在没有xsl:for-each-group
的情况下,有一些有限的方法可以实现相同的功能,参见这里。但由于Qt的XSLT变量绑定中的一个错误,这对我不起作用。最后,我甚至避免了xsl:for-each
循环,因为组的顺序和身份最初是已知的。查看我的代码
tl;dr:不幸的是,Qt XSLT在Qt 5.12之后几乎没有用;就像他们说的,实施是"实验性的"。自2013年以来,这方面的工作似乎很少。