XSLT / XPath 中的 not(*|@*) 是什么意思?

What does not(*|@*) mean in XSLT / XPath?

谁能解释一下这行代码的实际作用:

<xsl:when test="not(*|@*)">

我知道括号内的表达式必须为假才能触发下一行代码,我只是不确定如何解释它。

当当前节点没有任何名称的子元素或属性时,测试将通过:

  • *选择当前节点的子元素,不考虑名称;
  • @*选择当前节点的属性,不考虑名称;
  • |是并集运算符,合并其操作数的节点集(或序列);
  • not() 将在反转它之前将其参数转换为布尔值。 在节点集(或序列)的情况下,空将转换为假,反转为真。因此,如果不存在子元素和属性,它们的 set-union 通过 | 将为空,并且 not() 将 return 为真,从而实现对 [=21= 的测试]没有子元素也没有属性.

来源: 感谢 @DimitreNovatchev 对这个答案的一些有益改进。