在像$node/*
这样的xpath表达式中,为什么文本节点不包含在子节点中?这是因为这就是xpath的定义方式吗?
答案 0 :(得分:2)
这是因为这就是xpath的定义方式吗?
差不多。在section 2.3 of the XPath 1.0 spec中,它说:
对于主节点类型的任何节点,节点测试
*
都为真。例如,child::*
将选择上下文节点的所有元素子节点,attribute::*
将选择上下文节点的所有属性。
此外,在section 2.5中,它说:
*
选择上下文节点的所有元素子项
答案 1 :(得分:2)
回答“为什么”的问题非常困难。您是否在询问有关决策过程的历史问题,例如:什么论据是双向推进的,投票方式如何?或者你只是要求最好的猜测 - 有人能想到一个合理的语言设计师会选择这样做的原因吗?有时,当人们问“为什么”这些问题时,他们的意思是完全不同的,比如“规范中的哪些规则说语言应该采用这种方式?”。这就是@BoltClock选择解释它的方式。你表达问题的方式,我发现很难知道你正在寻找哪种答案。
显然,它本可以采用不同的方式;而不是a/*
选择所有元素子元素而a/node()
选择所有类型的子元素,它可能分别是a/element()
和a/*
。我对基本原理的猜测是,选择所有元素被认为是更常见的用户需求。但当然,当语言设计师使用这种理由时,他们会猜测用户会想要做什么。