使用concat在Xpath 1.0和2.0 Expression中需要帮助

时间:2013-09-26 10:58:31

标签: xpath conditional-statements

我正在使用以下功能基于EmployerName字段动态提取图像。

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

工作正常。

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

我们怎样才能使用Xpath 1.0& 2.0

任何帮助都会感激...

3 个答案:

答案 0 :(得分:3)

XPath 1.0有一个相当离奇的解决方案:

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

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

或者你可以转向XPath 2.0,生活更加无聊。

答案 1 :(得分:2)

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

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

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

为了便于阅读而添加的新行,可以任意删除。

答案 2 :(得分:1)

在xpath 2.0中,这可以正常工作

if ($EmployerName = "") then "C:\Projects\GlobalResourceSet\Images\default.png" else concat("C:\Projects\GlobalResourceSet\Images\",$EmployerName,"_banner_2013.png")