Xml XPath可选字段

Xml XPath可选字段,xml,xpath,Xml,Xpath,我需要编写一个XPATH表达式,它将以以下方式处理可选元素:如果找到元素,则返回元素;如果未找到元素,则返回空值(或者某个常量也可以) 带有可选元素“address”的XML示例: 在XPath 2.0中,如果,使用很容易: account/(if (address) then string(address) else '') 但在XPath 1.0中,这不可能在单个表达式中实现,因为XPath 1.0没有原子值有序序列的概念—它只能选择节点集。您可以使用XPath 1.0表达式提取accou

我需要编写一个XPATH表达式,它将以以下方式处理可选元素:如果找到元素,则返回元素;如果未找到元素,则返回空值(或者某个常量也可以)

带有可选元素“address”的XML示例:


在XPath 2.0中,如果,使用
很容易:

account/(if (address) then string(address) else '')

但在XPath 1.0中,这不可能在单个表达式中实现,因为XPath 1.0没有原子值有序序列的概念—它只能选择节点集。您可以使用XPath 1.0表达式提取
account
元素集,但随后需要在主机环境中迭代该组节点,并分别查找每个节点的
地址。

@MatthiasMüller负责if-then-else,但无助于解决根本问题,即没有XPath 1.0中的原子序列,无法在XPath级别进行序列理解。
"34 State St",,"45 Main St"
or
"34 State St",constant,"45 Main St"
account/(if (address) then string(address) else '')