【问题标题】:QXmlQuery fails to convert xml to html with setQuery(QString)QXmlQuery 无法使用 setQuery(QString) 将 xml 转换为 html
【发布时间】:2021-11-19 00:43:48
【问题描述】:

当我使用setQuery(QUrl(file.xsl)) 时,它可以工作。但是如果我将文件加载到QString 并调用setQuery(theString),那么后续的evaluateTo() 会失败(布尔异常和空结果)。

这里有什么问题?

值得注意的是,setFocus() 确实适用于 QUrl(file.xml) 和从文件加载的 QString

【问题讨论】:

  • setQuery(theString, QUrl(file.xsl)) 能解决您的问题吗?
  • @m7913d 1) 我不希望 setQuery 访问任何文件(我需要 xsl 在内存中),2) 即使您的变体有效,为什么它需要文件及其内容在theString?
  • Qt doc: "... documentURI [second arg] 表示从 sourceCode 设备获取的查询。它是静态上下文的基本 URI,定义见XQuery 语言。它在内部用于解析查询中出现的相对 URI,以及用于消息报告。..." 这有意义吗?
  • setQuery(theString, QUrl(file.xsl)) 确实有效,但最好是 setQuery(QUrl(file.xsl)) 非常奇怪; Qt doc不清楚:我可以传递xsl文件内容,而不是文件路径吗?

标签: html xml qt xslt qxmlquery


【解决方案1】:

原因是:

  • 我的 xsl 包含 document('') 表达式,带有空 URL,用于引用 xsl 本身;
  • Qt 尝试使用基本 URL 解析 URL;
  • base URL 是我的 exe 应用程序文件的路径,这是 Qt 行为:如果在 setQuery() 调用中省略应用程序路径,则将其视为基本 URL;
  • 因此文档的 URL 被解析为 exe 路径 - 然后它尝试将其加载为 xml 并引发异常。

除了这种情况,setQuery(QString) 本身一般都可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 2014-03-08
    • 2012-09-29
    相关资源
    最近更新 更多