我需要编写一个XPATH表达式,它将以下列方式处理可选元素:如果找到该元素,则返回该元素,如果找不到,则返回一个空值(或者某些常量也可以)
带有可选元素的示例XML"地址":
<account><name>Foobar</name><address>34 State St</address></account>
<account><name>Simpson</name></account>
<account><name>Cole</name><address>45 Main St</address></account>
需要返回:
"34 State St",,"45 Main St"
or
"34 State St",constant,"45 Main St"
答案 0 :(得分:2)
在XPath 2.0中,使用if
:
account/(if (address) then string(address) else '')
但是在XPath 1.0中,单个表达式不可能,因为XPath 1.0没有原子值有序序列的概念 - 它只能选择节点集。您可以使用XPath 1.0表达式提取account
元素集,但是您需要迭代主机环境中的那组节点,并分别查找每个节点的address
。