1

我正在使用以下函数根据 EmployerName 字段动态提取图像。

concat("C:\Projects\GlobalResourceSet\Images\",$EmployerName,"_banner_2013.png")

它工作正常。

但是,如果 EmployerName 错误或为空,我应该显示默认图像。

我们如何使用 Xpath 1.0 和 2.0 来做到这一点

任何帮助将不胜感激...

4

3 回答 3

3

XPath 1.0 有一个相当奇怪的解决方案,如下所示:

substring(S, 1, string-length(S) * number(C))

其中 S 是字符串,C 是布尔条件。如果 C 为假,则 number(C) 为 0,因此不输出任何内容。如果 C 为真,则 number(C) 为 1,因此输出整个字符串。所以效果是“如果条件 C 为真则输出 S 否则什么也不输出”;您可以将其与另一个使用逆条件的表达式结合起来,根据条件的值输出不同的字符串。

或者您可以迁移到 XPath 2.0,那里的生活更加无聊。

于 2013-09-26T13:36:25.723 回答
2

在 XPath 2.0 中,您还可以执行以下操作:

concat("C:\Projects\GlobalResourceSet\Images\",
  ($EmployerName[. != ''], 'default')[1],
  "_banner_2013.png"
)

这会将雇主名称(如果已设置)和“默认图像名称”按顺序排列,然后选择两者中的第一个。

为了可读性而添加的换行符可以任意删除。

于 2013-09-26T12:43:49.300 回答
1

在 xpath 2.0 这可以工作

if ($EmployerName = "") then "C:\Projects\GlobalResourceSet\Images\default.png" else concat("C:\Projects\GlobalResourceSet\Images\",$EmployerName,"_banner_2013.png")
于 2013-09-26T11:14:55.857 回答