在xpath中有可能有条件字符串连接或连接吗?

时间:2014-11-10 21:28:43

标签: xpath xpath-2.0

我正在尝试进行条件字符串连接,并想知道是否有比使用if语句更好的东西。

xml看起来类似于

<office>
    <department>Math</department>
    <room>210</room>
</office>

房间标签是可选的。如果房间标签存在,我想得到一个像'Math / 210'的值,否则只是'Math'。

我正在使用string-join(('//office/department', '//office/room'), '/')但是当房间标记不存在时会选择“数学/”。

如果我这样做,我可以按照我想要的方式工作

if(exists('//office/room') then string-join(('//office/department', '//office/room'), '/') else '//office/department'

这是唯一的方法,还是有更好的(更清洁的)解决方案?

1 个答案:

答案 0 :(得分:1)

I'm using string-join(('//office/department', '//office/room'), '/') but that then selects 'Math/' when the room tag doesn't exist.

这里的引用显然是错误的。它应该是

string-join((//office/department, //office/room), '/')

或更简洁

//office/string-join((department, room), '/')

假设房间元素确实不存在,这应该可以给你你想要的东西。如果&#34;房间&#34;选择一个空序列,应该没有分隔符。当然,如果房间确实存在并且包含零长度的字符串,则这是另一回事。