为什么XPath中的索引从1开始而不是0?

Edw*_*uay 111 xslt indexing xpath

我和一些同事正在比较我们编写的过去的语言,并且正在讨论我们使用VBScript的经验,其奇怪的功能,如基于1的索引而不是基于0的索引,就像几乎所有其他语言一样,原因是它是一个用户语言(例如Excel VBA)而不是开发人员的语言.

然后有人说," XPath也有基于1的索引 ",直到我发现这篇文章中有许多理由支持基于0的方法,其中包括Michael Kay本人的一些,我无法相信:

  • "...基于零的索引倾向于在访问具有一维数组访问表达式的多维数组时使索引公式更简单"
  • "在处理表格或订阅字符串时,基于零的寻址通常会更加方便"
  • "...硬件寻址不是基于0的寻址的唯一好处......它也使计算更容易......"

但随后Michael Kay被引用作为结论:

......基于1的逻辑是XPath和XSLT的正确选择...因为该语言是为用户而不是为程序员设计的,而且用户仍然有这种老式的习惯,即将书中的第一章称为章节一...

有人可以向我解释一下吗? (1)XPath如何为用户设计?我无法想象任何不是开发人员与XPath的语法刚性或XSLT的声明/功能编程方面争论的人.和(2)为什么确实的XPath的创造者违背现代编程语言的规范,通过选择基于1指数?

mik*_*nie 25

数组和其他集合索引表示内存偏移,因此逻辑上它们从零开始.XML和XPATH索引代表位置和计数,因此逻辑上它们从一开始(因此零代表"空")


And*_*rew 8

要回答这个问题,我们必须研究一些技术的历史.

RSS XML XSLT和XPath历史

RSS版本0.9最初是由Netscape的Netscape的my.netscape.com门户网站上的几个人在1999年发布的RDF Site Summary.那年晚些时候,它被重命名为RSS(Rich Site Summary),其中包含v0.91更新.该项目的开发多次易手,但RSS版本1.0于2000年12月发布.随着v1.0的更新,RSS包括对XML的支持.

2002年,v2.0作为RSS(Really Simple Syndication)于9月发布,并开始发展成为一项主要的互联网技术.在它的早期历史中,RSS源(以及它们包含的XML数据)是由原始格式的人读取的.博客和其他新闻来源使用RSS提要和XML来输出不断更新的信息.由于XML仅由凡人(非程序员)阅读,因此XPath和XSLT也需要易于理解,以便这些凡人在与它交互时不会被复杂性所淹没.这就是为什么XPath模仿URI的风格,这是最终用户已经熟悉的东西.为了用户可读性而做出的让步之一是使用老式的编号技术,即基于1的索引而不是基于0的索引.

尽管RSS提要和XML对大多数人来说都是可读的,但RSS阅读器的开发是为了让人们阅读RSS提要的界面更加愉快.现在,原始RSS和XML数据几乎只能通过某种读取器或图形界面读取.XML仍然在网络上频繁使用(可能是永久性的),但它被精美的图形用户界面所掩盖,为最终用户提供更好的体验.

*" 凡人 "一词指的是不是程序员的人

  • 我不相信它与RSS有很多关系.例如,在[此XSL规范](http://www.w3.org/TR/1999/WD-xslt-19990421)中(后来分为XPath和其他)(https://www.w3. org/standards/history/xpath))从1999年4月开始,"position()函数返回上下文节点列表中上下文节点的位置.第一个位置是1,所以最后一个位置将等于last() ".在起草到1999年4月的时候,是否有任何"凡人"使用RDF? (5认同)