Pourquoi les index dans XPath commencent-ils par 1 et non par 0?

Certains collègues et moi étions en train de comparer les langues que nous avions programmées et parlions de notre expérience avec VBScript avec ses caractéristiques bizarres comme l’ index basé sur 1 au lieu des index basés sur 0 comme presque toutes les autres langues. langue pour les utilisateurs (par exemple Excel VBA) au lieu d’un langage pour les développeurs.

Puis quelqu’un a dit, ” XPath a aussi des index basés sur 1 ” que je ne pouvais pas croire jusqu’à ce que j’ai trouvé cet article dans lequel beaucoup de raisons sont données en faveur de l’approche basée sur 0 incluant certains de Michael Kay lui-même:

  • “… l’indexation basée sur zéro tend à simplifier les formules d’index lors de l’access à un tableau multidimensionnel avec une expression d’access à un tableau à une dimension”
  • “Lors de la manipulation de tables ou de l’indexation dans des chaînes, l’adressage basé sur zéro serait souvent beaucoup plus pratique”
  • “… l’adressage matériel n’est pas le seul avantage de l’adressage basé sur 0 … il facilite également les calculs …”

mais Michael Kay est cité en conclusion:

… la logique basée sur 1 était le bon choix pour XPath et XSLT … car le langage était conçu pour les utilisateurs, pas pour les programmeurs, et les utilisateurs ont toujours cette habitude de se référer au premier chapitre d’un livre en tant que chapitre. Un…

Est-ce que quelqu’un peut m’expliquer cela? (1) Comment XPath est-il conçu pour les utilisateurs? Je ne peux pas imaginer quelqu’un qui ne soit pas un développeur qui se querelle avec la rigidité syntaxique de XPath ou les aspects déclaratifs / de functional programming de XSLT. et (2) Pourquoi les créateurs de XPath ont-ils vraiment défié la norme des langages de programmation modernes en choisissant un index basé sur 1?

Les tableaux et les autres index de collection représentent les décalages de mémoire, de sorte qu’ils commencent logiquement à zéro. Les index XML et XPATH représentent des positions et des comptages, assez logiquement ils commencent à un (et zéro est donc représentatif de “empty”)

Pour répondre à cette question, nous devons examiner l’historique de certaines technologies.

Historique XML XSLT et XPath RSS

La version 0.9 de RSS a été initialement publiée en tant que résumé de site RDF en 1999 par quelques personnes de Netscape pour le portail my.netscape.com de Netscape. Plus tard dans l’année, il a été renommé RSS (Rich Site Summary) avec la mise à jour v0.91. Le développement du projet a changé de mains à plusieurs resockets, mais la version 1.0 de RSS a été publiée en décembre 2000. Avec la mise à jour v1.0, RSS a pris en charge XML.

Au cours de 2002, la version 2.0 a été lancée en septembre sous le nom de RSS (Really Simple Syndication) et a commencé à évoluer vers une technologie Internet majeure. Au début de son histoire, les stream RSS (et les données XML qu’ils contenaient) étaient lus par les humains au format brut. Les blogs et autres sources d’informations ont utilisé des stream RSS et XML pour produire des informations mises à jour en permanence. Puisque XML était lu par de simples mortels (non-programmeurs), XPath et XSLT devaient également être facilement compréhensibles, de sorte que ces simples mortels ne seraient pas submergés par la complexité lorsqu’ils interagiraient avec lui. C’est pourquoi XPath imite le style des URI, ce que les utilisateurs finaux connaissaient déjà. L’une des concessions faites aux fins de la lisibilité par les utilisateurs consistait à utiliser des techniques de numérotation anciennes, à savoir des index basés sur 1 au lieu d’index basés sur 0. C’est la même concession que vous avez mentionnée avec VBScript, et elle a été faite pour des raisons similaires.

Bien que les stream RSS et XML aient été conçus pour être lisibles par la plupart des utilisateurs, les lecteurs RSS ont été développés pour fournir aux utilisateurs une interface plus agréable pour lire les stream RSS. Désormais, les données RSS et XML brutes sont lues presque exclusivement avec une sorte de lecteur ou une interface graphique. XML est toujours utilisé fréquemment (peut-être de manière permanente) sur le Web, mais il est masqué par des interfaces utilisateur graphiques sophistiquées pour offrir une meilleure expérience aux utilisateurs finaux.

* Le terme ” simples mortels ” désigne les humains qui ne sont pas des programmeurs