Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要使用concat在Xpath 1.0和2.0表达式中提供帮助吗_Xpath_Conditional Statements - Fatal编程技术网

需要使用concat在Xpath 1.0和2.0表达式中提供帮助吗

需要使用concat在Xpath 1.0和2.0表达式中提供帮助吗,xpath,conditional-statements,Xpath,Conditional Statements,我正在使用下面的函数根据EmployerName字段动态调出图像 concat("C:\Projects\GlobalResourceSet\Images\",$EmployerName,"_banner_2013.png") 它很好用 但是,如果EmployerName错误或为空,我应该显示默认图像 我们如何使用XPath1.0和XPath2.0实现这一点 任何帮助都将是感激的…在xpath 2.0中,这可能会起作用 if ($EmployerName = "") then "C:\Proj

我正在使用下面的函数根据EmployerName字段动态调出图像

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

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

我们如何使用XPath1.0和XPath2.0实现这一点


任何帮助都将是感激的…

在xpath 2.0中,这可能会起作用

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

在XPath2.0中,这是可行的

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

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

concat("C:\Projects\GlobalResourceSet\Images\",
  ($EmployerName[. != ''], 'default')[1],
  "_banner_2013.png"
)
这会将雇主名称(如果已设置)和“默认图像名称”按顺序排列,然后选择两者中的第一个


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

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

concat("C:\Projects\GlobalResourceSet\Images\",
  ($EmployerName[. != ''], 'default')[1],
  "_banner_2013.png"
)
这会将雇主名称(如果已设置)和“默认图像名称”按顺序排列,然后选择两者中的第一个


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

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

substring(S, 1, string-length(S) * number(C))
其中S是字符串,C是布尔条件。如果C为false,则数字(C)为0,因此不输出任何内容。如果C为true,则数字(C)为1,因此输出整个字符串。因此效果是“如果条件C为真,则输出S,否则不输出任何内容”;您可以将其与另一个表达式结合使用反向条件,根据条件的值输出不同的字符串


或者您也可以转到XPath 2.0,那里的生活更无聊。

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

substring(S, 1, string-length(S) * number(C))
其中S是字符串,C是布尔条件。如果C为false,则数字(C)为0,因此不输出任何内容。如果C为true,则数字(C)为1,因此输出整个字符串。因此效果是“如果条件C为真,则输出S,否则不输出任何内容”;您可以将其与另一个表达式结合使用反向条件,根据条件的值输出不同的字符串


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

谢谢jirka。。。您能为xpath 1.0提供非常重要的解决方案吗?您是在使用纯xpath还是其他使用xpath的语言(如xslt?),我正在使用一个名为StreamServe说服的CCM工具。在这个工具中,我正在使用这个。对你说得对。。与XSLT类似……在XSLT中,您可以使用xsl:choose实现所需的可能性。我不确定在纯XPath1.0中是否可以(我不知道)。不幸的是,我对StreamServe一无所知。对不起,谢谢你,吉尔卡。。。您能为xpath 1.0提供非常重要的解决方案吗?您是在使用纯xpath还是其他使用xpath的语言(如xslt?),我正在使用一个名为StreamServe说服的CCM工具。在这个工具中,我正在使用这个。对你说得对。。与XSLT类似……在XSLT中,您可以使用xsl:choose实现所需的可能性。我不确定在纯XPath1.0中是否可以(我不知道)。不幸的是,我对StreamServe一无所知。我很抱歉。