【问题标题】:Add namespace in xpath in XmlFile Element (Wix Util Extension)在 XmlFile 元素的 xpath 中添加命名空间(Wix Util 扩展)
【发布时间】:2023-03-19 15:20:01
【问题描述】:

wix 中XmlFile 元素的ElementPath 属性接受xpath 来选择目标。如何在此 xpath 中包含命名空间前缀?

【问题讨论】:

  • 在标签前添加命名空间不起作用?例如。 /myns:MyTagName
  • 目标 xml 文档在根元素使用默认命名空间,没有任何命名空间前缀,我找不到任何方法将前缀与 XmlFile 元素中的 xml 命名空间相关联。
  • 我自己没有尝试过,但我发现你必须在你的 XSLT 文件(我想你可以访问)中声明这个默认命名空间,使用前缀,例如a:xmlns='http://my.default.namespace/taken/from/xml/file' 然后在您的 XSLT 文件中使用此前缀来访问元素,例如/a:MyTagName.
  • 抱歉,将 heat-result 的转换与 XSLT 混淆了。忽略我上面的回答。

标签: wix wix-extension


【解决方案1】:

根据this issue entry,这似乎是一个错误或更好:一个未实现的功能,因为最终存在的默认命名空间没有被util:XmlFile-元素公开。
根据此条目中的第一条评论,您可以使用 util:XmlConfig 解决此问题,它应该在空命名空间中查找所需的节点/元素。

编辑:我找到了另一种使用它的方法:根据@LarsH 的this SO question,您可以使用类似以下的方法(我自己没有测试,但似乎是一个有效的 XPath 1.0 表达式,它应该可以正常工作):

"*[local-name() = 'foo' and namespace-uri() = 'http://my.org/ns/2.0']"

记得转义方括号,即[...]应该变成[\[]...[\]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-05
    • 2012-08-28
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    相关资源
    最近更新 更多