我可以在XPath中为缺少的标记创建值吗?

JPL*_*mme 9 xml xslt xpath

我有一个应用程序,它使用XPath从XML文件中提取数据.如果缺少该XML源文件中的节点,我想返回值"N/A"(非常类似于Oracle NVL函数).诀窍是应用程序不支持XSLT; 我想单独使用XPath和XPath来做这件事.

那可能吗?

jel*_*irt 5

它可以完成但仅当节点存在时的返回值是节点的字符串值,而不是节点本身.XPath

substring(concat("N/A", /foo/baz), 4 * number(boolean(/foo/baz)))
Run Code Online (Sandbox Code Playgroud)

将返回baz元素的字符串值(如果存在),否则返回字符串"N/A".

概括方法:

substring(concat($null-value, $node),
          (string-length($null-value) + 1) * number(boolean($node)))
Run Code Online (Sandbox Code Playgroud)

其中$null-value是空值字符串和$node用于选择节点的表达式.请注意,如果$node求值为包含多个节点的节点集,则使用一个节点的字符串值.