我有一个应用程序,它使用XPath从XML文件中提取数据.如果缺少该XML源文件中的节点,我想返回值"N/A"(非常类似于Oracle NVL函数).诀窍是应用程序不支持XSLT; 我想单独使用XPath和XPath来做这件事.
那可能吗?
它可以完成但仅当节点存在时的返回值是节点的字符串值,而不是节点本身.XPath
substring(concat("N/A", /foo/baz), 4 * number(boolean(/foo/baz)))
将返回baz
元素的字符串值(如果存在),否则返回字符串"N/A".
概括方法:
substring(concat($null-value, $node), (string-length($null-value) + 1) * number(boolean($node)))
其中$null-value
是空值字符串和$node
用于选择节点的表达式.请注意,如果$node
求值为包含多个节点的节点集,则使用第一个节点的字符串值.