FR2908539A1 - Expression e.g. XML Path expression, evaluating method for processing XML data flow, involves evaluating each sub-expression relative to location path on data of structured document using XML path browser - Google Patents

Expression e.g. XML Path expression, evaluating method for processing XML data flow, involves evaluating each sub-expression relative to location path on data of structured document using XML path browser Download PDF

Info

Publication number
FR2908539A1
FR2908539A1 FR0654920A FR0654920A FR2908539A1 FR 2908539 A1 FR2908539 A1 FR 2908539A1 FR 0654920 A FR0654920 A FR 0654920A FR 0654920 A FR0654920 A FR 0654920A FR 2908539 A1 FR2908539 A1 FR 2908539A1
Authority
FR
France
Prior art keywords
expression
data
xpath
browser
location
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR0654920A
Other languages
French (fr)
Other versions
FR2908539B1 (en
Inventor
Franck Denoual
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to FR0654920A priority Critical patent/FR2908539B1/en
Publication of FR2908539A1 publication Critical patent/FR2908539A1/en
Application granted granted Critical
Publication of FR2908539B1 publication Critical patent/FR2908539B1/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/149Adaptation of the text data for streaming purposes, e.g. Efficient XML Interchange [EXI] format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/131Fragmentation of text files, e.g. creating reusable text-blocks; Linking to fragments, e.g. using XInclude; Namespaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]

Abstract

The method involves determining data of a structured document satisfying an expression such as XML Path expression, where the expression is composed of two sub expressions. Each sub expression is relative to a XML location path. Each sub-expression relative to the location path is evaluated on the data of the structured document using one of a set of XML path browsers (23). The numbers of browsers are determined using a determining unit. Independent claims are also included for the following: (1) a device for evaluating an expression for accessing a part of a structured document (2) a computer program comprising a set of instructions for performing a expression evaluating method (3) an information storage medium comprising a set of instructions for performing a expression evaluating method.

Description

10 La présente invention se rapporte à un procédé et un dispositifThe present invention relates to a method and a device

d'évaluation d'une expression, notamment d'une expression de type XPath sur les données contenues dans un document structuré. Elle trouve une application générale dans le traitement de flux de données XML et plus précisément sur des fichiers au format XML. 15 Le langage XPath (acronyme de XML Path Language ) est issu d'une spécification du consortium W3C appelée Spécification XPath 1.0 , présente à l'adresse www.w3.org/TR/xpath. Ce langage a pour objectif de définir une syntaxe adaptée à adresser des parties d'un document structuré de type XML. 20 La syntaxe de ce langage utilise une syntaxe similaire à celle utilisée dans les expressions relatives à des chemins de localisation dans un système de fichiers, par exemple l'expression relative à un chemin de localisation /librairie/livre . Le langage XPath définit quatre types de données qui sont 25 chaîne , booléen , nombre et ensemble de noeuds , sept types de noeuds et des expressions permettant de manipuler les données, notamment les opérateurs définis égalité , différence , infériorité , supériorité , addition , soustraction , multiplication , division , modulo , ou binaire et et binaire . Quand aux noeuds, ils peuvent représenter différents 30 types d'évènement XML, par exemple le début du document (aussi appelé le noeud racine), un élément, un attribut, un texte, un commentaire, une instruction de traitement ( processing-instruction en terminologie anglo-saxonne) et un 1 2908539 2 espace de nommage ( namespace en terminologie anglo-saxonne). Cette syntaxe permet l'expression de requêtes sur des documents structurés en vue, par exemple de leur transformation (par exemple la transformation XSLT selon la recommandation du W3C définie à l'adresse www.w3.org/TR/xslt), de l'accès 5 rapide à des sous-parties (par exemple selon la recommandation du W3C: XPointer : www.w3.org/TR/WD-xptr) ou de la réalisation de traitements sur des parties du document (par exemple selon le langage XQuery 1.0, défini à l'adresse www.w3.org/TR/xquery). Le langage XPath permet de simplifier le développement 10 d'applications aptes à parcourir des données dans des documents structurés de type XML. L'entité apte à réaliser l'évaluation d'une expression XPath est appelée processeur XPath ( XPath Processor en terminologie anglo-saxonne). A partir d'une expression XPath et d'une référence à des données 15 XML mémorisées dans un document ou reçues via une transmission réseau, le processeur XPath évalue l'expression. La syntaxe XPath définit également une grammaire décrivant les règles de construction des différentes expressions et sous-expressions. Ces expressions sont notamment les expressions retournant un booléen (par 20 exemple, les expressions OrExpr, AndExpr, RelativeExpr, EqualityExpr), les expressions retournant un nombre (par exemple AdditiveExpr, MultiplicativeExpr), les expressions retournant n'importe quel type de données (par exemple, les expressions FilterExpr et FunctionCall), et les expressions retournant une liste ordonnée de noeuds (par exemple, les expressions 25 LocationPath correspondant à la spécification d'un chemin à résoudre dans un document XML). L'invention est particulièrement adaptée aux expressions relatives à un chemin de localisation ( LocationPath selon la syntaxe du langage XPath). 30 Une expression relative à un chemin de localisation peut-être absolue ou relative selon qu'elle commence par / ou non. Dans le cas d'une expression relative à un chemin absolue, la recherche commence depuis le 2908539 3 début du document, aussi appelé racine, alors que dans le cas d'une expression relative à un chemin relative, la recherche est contextuelle, par exemple depuis le noeud courant. Toute expression relative à un chemin de localisation est composée 5 d'un ensemble d'expressions indiquant les étapes de localisation dans ce chemin ( Steps en terminologie anglo-saxonne), et chaque étape de localisation correspondant à un niveau de décomposition pour l'évaluation de l'expression relative à un chemin de localisation. En effet, chaque étape de localisation peut être mise en correspondance avec un niveau de profondeur dans le document XML. Par exemple, l'expression relative au chemin /librairie/livre comprend deux étapes de localisation qui sont d'une part librairie , recherché à la profondeur 1 et d'autre part livre , recherché à la profondeur 2. L'évaluation d'une étape de localisation se fait notamment en fonction de l'expression de l'étape parente de localisation, i.e. l'étape de localisation précédente dans l'expression. Le résultat de l'évaluation d'une étape de localisation fournit le contexte d'évaluation pour l'étape de localisation suivante. Ce contexte est composé de trois éléments : un noeud appelé noeud contexte , une position et une taille. Le noeud contexte est le noeud dans le document qui vérifie l'étape de localisation précédente, la position indique le rang du noeud solution de l'étape de localisation courante parmi ses frères, la taille du contexte indique le nombre de noeuds solution de l'étape de localisation courante. Toute étape de localisation comprend une à trois entités parmi les 25 entités suivantes. Tout d'abord, l'entité exprimant une filiation, aussi appelé axes, ( AxisSpecifier selon la syntaxe XPath) décrit la relation entre un noeud contexte et les noeuds solution d'une étape de localisation. Cette entité est optionnelle. Par exemple, les expressions /a/child ::b et /a/attribute ::b 30 signifient que l'on recherche, respectivement, un noeud b fils d'un noeud a et un noeud représentant un attribut b fils d'un noeud a . La spécification définit 13 types d'entité exprimant une relation de filiation 2908539 4 ( AxisSpecifier ) qui sont : self, child, attribute (ou @), namespace, descendant, descendant-or-self, following, following-sibling qui sont considérés comme des expressions de filiation descendante (forward axes en anglais) et parent, ancestor, ancestor-or-self, preceding et preceding-sibling qui sont 5 considérés comme des expressions de filiation ascendante (backward ou reverse axes en anglais). Ensuite, l'entité exprimant un test d'éligibilité d'un noeud candidat ( NodeTest selon la syntaxe XPath) définit soit une contrainte de type soit une contrainte de nom que les noeuds candidats doivent respecter pour être 10 considérés comme solution d'une étape de localisation . Cette entité est obligatoire. La syntaxe définit différents tests sur le type de noeuds, notamment, la contrainte de type noeud ( node() )) selon la syntaxe XPath), la contrainte de type texte ( textO selon la syntaxe XPath), la contrainte de 15 type commentaire ( comment() ), selon la syntaxe XPath) et la contrainte de type instruction de traitement ( processing-instruction() selon la syntaxe XPath). Par exemple, l'expression /child ::b impose une contrainte de nom alors que l'expression /descendant::commentO permet de rechercher 20 tous les noeuds de type commentaire. Enfin, l'entité exprimant un prédicat ( Predicate selon la syntaxe XPath) permet d'imposer une ou plusieurs conditions supplémentaires pour la recherche de noeuds solution d'une étape de localisation. Cette entité est optionnelle. Une expression appelée prédicat , indiquée entre crochets, suit les mêmes règles de construction que toute expression XPath. Par exemple, l'expression /a/b[2] permet de sélectionner tous les deuxièmes éléments fils de nom b de chaque noeud de type élément de nom a , et l'expression /a/b[@id= 3 ] permet de sélectionner les fils de nom b du noeud de type élément de nom a possédant un attribut id ayant une valeur égale à 3. L'implémentation actuelle du langage XPath permet d'accéder à des parties d'un document XML après avoir construit une représentation 2908539 5 intermédiaire du document XML apte à faciliter la recherche, notamment sous la forme d'un arbre représentant un modèle d'objets du document ( document Object Model ou DOM en terminologie anglo-saxonne défini à l'adresse www.w3.org/DOM). Ainsi la recherche consiste à parcourir cet arbre autant de 5 fois que nécessaire pour l'extraction des noeuds demandés. Une telle approche pose un double problème. Cette solution s'avère coûteuse en espace mémoire notamment dans le cas de documents XML de grande taille. En effet, si un processeur XPath est implanté dans un appareil de type appareil photo, photocopieur ou 10 autre, ayant des ressources limitées, la représentation intermédiaire peut être trop volumineuse pour être mémorisée. De plus, cette solution s'avère couteuse en temps d'exécution du fait des parcours multiples sur l'arbre DOM lors de la recherche de noeuds solutions de l'expression XPath. L'évaluation à la volée d'une expression XPath consiste dans le cas 15 idéal à traiter les évènements XML au fur et à mesure de leur réception par le processeur XPath. Ainsi à chaque évènement reçu, le processeur XPath décide si le noeud satisfait ou non les contraintes de l'étape de localisation courante et ce jusqu'à la dernière étape de localisation exprimée dans l'expression relative à un chemin de localisation. Toutefois, la détermination du respect des 20 contraintes d'un évènement XML n'est pas toujours possible au moment où le processeur XPath reçoit et traite cet évènement. Ceci est particulièrement le cas lorsque l'expression relative à un chemin de localisation contient des prédicats. L'exemple illustré en Figure 1 comprend un exemple d'un document XML (0.1) où chaque ligne lue représente 25 un événement à traiter (0.2). Il est illustré par l'évaluation de l'expression /a/b[b] . Cette évaluation va produire comme résultat <b val= 123 attr2= blabla > lorsque l'évènement <b>b0</b> sera reçu (0.3). En outre, un problème additionnel est le problème des solutions emboitées. Celui-ci correspond à l'application des entités exprimant une filiation 30 de type descendant ( descendant selon la syntaxe XPath) et de type descendant ou noeud contexte ( descendant-or-self selon la syntaxe XPath) sur des documents XML récursifs. 2908539 6 Selon l'exemple illustré en Figure 1, une expression du type //b/c (i.e. /descendant-or-self.-:node0/b/c) qui consiste à rechercher tous les noeuds de type élément de nom c fils de noeud de type élément de nom b se trouvant à n'importe quelle profondeur du document XML pose les problèmes 5 suivants. Tout d'abord, lors de l'évaluation, la correspondance entre une étape de localisation et la profondeur dans le document XML est perdue. En effet, dans les expressions ci-dessus, la recherche n'est nullement limitée à la recherche des éléments b ayant une profondeur de deux et des éléments 10 c ayant une profondeur de trois. Ensuite, lors de la recherche d'éléments c résolvant l'étape de localisation de niveau trois, le processeur doit auparavant détecter les éventuels éléments b rencontrés comme solution de l'étape de localisation de niveau deux et sur lesquels des noeuds fils c sont recherchés. Ainsi, la 15 résolution de l'expression ci-dessus peut donc être vue comme la recherche du motif b/c à n'importe quel niveau de profondeur. L'évaluation à la volée, pour être complète, doit également permettre l'émission des résultats au fur et à mesure qu'ils sont déterminés. II est connu du document US2004068487 intitulé Method for 20 streaming XPath processing with forward and backward axes une méthode apte à évaluer des expressions à la volée dans laquelle les expressions XPath contenant des relations de filiation ascendante ( reverse axes selon la syntaxe XPath) sont ré-écrites. Cette méthode d'évaluation est réalisée à partir d'une représentation de l'expression sous la forme d'un arbre (XTree) du 25 document XML. Cet arbre permet d'obtenir des relations de filiation vers l'avant et donc de garantir un seul parcours du flux XML. Cependant, selon cette méthode, le processeur XPath doit analyser tous les noeuds fournis par un analyseur XML, ce qui peut conduire dans le cas des expressions les plus simples à un surcoût en temps d'évaluation. Pour chaque noeud ainsi reçu, le 30 processeur retourne un statut : solution , non solution ou solution potentielle . 2908539 7 Selon le document US20040172599 intitulé Systems and methods for streaming XPath queries , il est décrit un processeur XPath compatible avec un traitement à la volée. Selon cette méthode, le processeur reçoit des évènements d'un analyseur, décide du caractère de correspondance sur ces 5 évènements par rapport à une expression et informe une application utilisant les noeuds résultats. Cette solution possède les mêmes inconvénients que la précédente à savoir l'analyse exhaustive de tous les noeuds du flux XML. Compte tenu de ce qui précède, il serait par conséquent intéressant de pouvoir évaluer des expressions, notamment des expressions XPath à la 10 volée en limitant les parcours multiples et la mémorisation des données structurées et en s'affranchissant d'au moins certains des inconvénients mentionnés ci-dessus. La présente invention vise en premier lieu à fournir un procédé d'évaluation d'une expression pour accéder à au moins une partie d'un 15 document structuré au moyen d'au moins un navigateur apte à extraire les données structurées du document, l'expression étant composée d'au moins deux sous expressions relatives chacune à un chemin de localisation, caractérisé en ce qu'il comprend une étape d'évaluation de chacune des sous-expressions sur la base des données du document au moyen d'au moins un 20 navigateur distinct pour chaque sous-expression. Le procédé d'évaluation d'une expression, notamment une expression de type XPath, pour accéder à au moins une partie d'un document structuré au moyen d'au moins un navigateur apte à extraire les données structurées du document selon l'invention permet de déterminer les données du 25 document satisfaisant l'expression. L'expression est composée d'au moins deux sous expressions relatives chacune à un chemin de localisation. Selon l'invention, chacune des sous-expressions relatives à un chemin de localisation est évaluée sur les données du document à partir d'au moins un navigateur distinct. 30 Ainsi, il est permis d'évaluer des expressions à la volée en limitant, d'une part, le stockage de données du document structuré et d'autre part, les 2908539 8 parcours multiples du document structuré dans un mode optimisé. Le procédé permet, en outre, de fournir les résultats dès qu'ils sont calculés. Pour ce faire, le procédé conforme à l'invention utilise plusieurs navigateurs aptes à traiter les sous-expressions de l'expression. 5 Selon une caractéristique particulière, le procédé comprend une étape préalable de détermination du nombre de navigateurs. Ainsi, le nombre de navigateurs est choisi de manière à optimiser le traitement d'une expression donnée. Selon une autre caractéristique particulière, chaque sous-expression 10 relative à un chemin comprend un ensemble d'étapes de localisation. Selon une caractéristique particulière, chaque étape de localisation comprend au moins une entité exprimant une filiation entre les données structurées. Selon une autre caractéristique particulière, la filiation est une filiation 15 indirecte. Selon une caractéristique particulière, le procédé comprend une étape de détermination des sous-expressions ayant au moins une entité exprimant une filiation indirecte. Selon une caractéristique particulière, le procédé comprend une 20 étape de test approfondi sur ladite au moins une entité exprimant une filiation indirecte, le test approfondi étant fonction de conditions sur les données et sur les évaluations précédentes desdites données. Selon une caractéristique particulière, le procédé comprend : - une étape d'extraction des données sur la base desquelles les 25 sous-expressions sont évaluées ; et - une étape de mémorisation des données extraites. Le test approfondi, permet d'extraire des résultats et notamment d'éventuels résultats imbriqués (ou emboîtés) quelle que soit leur profondeur en ne stockant qu'une partie de leur historique et sans parcours multiple. 30 Selon une caractéristique particulière, lors de l'évaluation d'une seconde sous-expression faisant suite à une première sous-expression, ledit au 2908539 9 moins un navigateur de la seconde sous-expression est initialisé avec le contexte du navigateur de la première sous-expression. Ainsi, le navigateur utilisé pour analyser la seconde sous-expression est apte à reprendre le traitement au même niveau que le navigateur utilisé 5 pour la première sous-expression. Selon une caractéristique particulière, chacun desdits navigateurs pilote au moins un analyseur du document structuré. Selon une caractéristique particulière, si des navigateurs utilisent un même analyseur, les données extraites par un navigateur sont réutilisées par 10 un autre navigateur utilisant ce même analyseur. Selon une caractéristique particulière, le procédé comprend une étape de détermination des données extraites du document vérifiant l'ensemble des sous-expressions. Selon une caractéristique particulière, dès que des données sont 15 déterminées, lesdites données sont fournies à une application apte à traiter ces données. Selon l'invention, il est permis à une application d'obtenir les résultats de l'évaluation au fur et à mesure de la détermination des données satisfaisant à l'expression. 20 L'invention permet l'émission des données au fur et à mesure, ce qui permet de traiter les données plus rapidement au niveau de l'application, sans avoir à attendre le traitement complet et donc sans forcément recourir au stockage de ces résultats. Selon une caractéristique particulière, les données déterminées sont 25 mémorisées. Selon une caractéristique particulière, si des données déterminées ont une relation de filiation directe ou indirecte avec des données préalablement déterminées, alors ces données sont émises après les données préalablement déterminées. 30 En outre, selon cette caractéristique, les données satisfaisant l'expression sont émises dans l'ordre du document. 2908539 10 Ceci permet d'être compatible, notamment, avec la spécification XPath 1.0. Selon une caractéristique particulière, l'émission des données déterminées est précédée d'un signal de début et est suivi d'un signal de fin. 5 Ceci permet à l'application d'être informée du début et de la fin d'un résultat, ce qui lui permet de traiter immédiatement ce résultat. Ainsi, selon cette caractéristique, l'application qui reçoit les données satisfaisant l'expression n'a pas de séparation des résultats à effectuer. Corrélativement, l'invention vise également un dispositif d'évaluation 10 d'une expression pour accéder à au moins une partie d'un document structuré au moyen d'au moins un navigateur apte à extraire les données structurées du document, l'expression étant composée d'au moins deux sous expressions relatives chacune à un chemin de localisation, caractérisé en ce qu'il comprend des moyens d'évaluation de chacune des sous-expressions sur la base des 15 données du document au moyen d'au moins un navigateur distinct pour chaque sous-expression. Ce dispositif présente les mêmes avantages que le procédé d'évaluation d'une expression brièvement décrit ci-dessus et ils ne seront donc pas rappelés ici. 20 Selon d'autres aspects, l'invention concerne aussi des programmes d'ordinateur pour une mise en oeuvre du procédé de l'invention décrit brièvement ci-dessus. D'autres aspects et avantages de la présente invention apparaîtront plus clairement à la lecture de la description qui va suivre, cette description 25 étant donnée uniquement à titre d'exemple non limitatif et faite en référence aux dessins annexés, dans lesquels : -la figure 1 représente un exemple d'un document XML sur lequel une expression est évaluée; - la figure 2 illustre le contexte applicatif de l'invention ; 30 - la figure 3 représente de manière schématique un appareil dans lequel est mise en oeuvre l'invention ; 2908539 11 - la figure 4 illustre un algorithme de compilation d'une expression XPath conforme à l'invention ; - la figure 5 illustre un algorithme d'analyse des expressions de filiation conforme à l'invention ; 5 - la figure 6 représente un algorithme d'évaluation d'une expression XPath selon l'invention ; - la figure 7 illustre un algorithme d'évaluation des expressions de filiation selon l'invention ; - la figure 8 illustre un algorithme de recherche d'un noeud candidat 10 conformément à l'invention ; - la figure 9 illustre un algorithme de test selon le mode normal conformément à l'invention ; - la figure 10 illustre un algorithme de test selon le mode approfondi conformément à l'invention ; 15 - la figure 11 illustre l'évaluation d'une expression XPath sur un document XML selon l'invention ; - la figure 12 illustre un traitement du signal début de résultat par un navigateur conformément à l'invention ; - la figure 13 illustre un traitement de tout évènement XML extrait par 20 le navigateur ; et - la figure 14 illustre un algorithme traitant les résultats emboités. L'invention consiste à évaluer des expressions, notamment des expressions XPath, à la volée en limitant à la fois les parcours multiples et la 25 mémorisation de données, notamment de données XML pour accéder à au moins une partie d'un document structuré. Plus particulièrement, la description va porter sur l'évaluation des expressions relatives à un chemin de localisation ( LocationPath selon la syntaxe XPath) contenant des entités de type expression de filiation 30 ( AxisSpecifier selon la syntaxe XPath) descendant ( forward AxisSpecifier en terminologie anglo-saxonne), c'est-à-dire les entités qui 2908539 12 spécifient des relations de filiation ou de descendance de noeud par rapport à un noeud contexte donné. En outre, la description de l'invention comprend la fourniture à une application des résultats de l'évaluation au fur et à mesure de leur 5 détermination. Pour cela, le processeur XPath utilise plusieurs analyseurs XML aussi appelés navigateurs XML ( XML Parser en anglais). Tel que décrit ci-après, le nombre de navigateurs peut être déterminé par avance. Ces derniers peuvent être activés ou désactivés et ils peuvent être synchronisés dès que 10 nécessaire. De plus, l'invention permet de détecter et traiter les solutions emboitées, notamment en activant dès que nécessaire la mémorisation d'un historique des noeuds traités par l'analyseur et en réalisant un test approfondi sur ces noeuds. Toutefois, une étape préalable d'analyse des étapes de 15 localisation issues de la compilation est nécessaire. La Figure 2 illustre le contexte applicatif de l'invention dans lequel une application 1 traite des données XML extraites par un processeur XPath 2 au moyen d'un ou plusieurs analyseurs XML 3 à partir d'un flux de données XML 4, un analyseur XML pouvant être un navigateur XML. 20 Selon un mode de réalisation, le processeur XPath 2 comprend trois entités. Tout d'abord, il comprend un compilateur 21 ayant pour rôle d'analyser les expressions et de les traduire en une représentation interne. Le fonctionnement de ce compilateur est décrit ci-après en référence à la Figure 4. 25 Ensuite, le processeur XPath comprend une unité de contrôle d'exécution 22 apte à gérer, d'une part, les interactions entre les différents modules du processeur XPath et, d'autre part, la communication du processeur XPath avec l'application 1. En outre, il prend en charge l'évaluation des noeuds. En outre, le processeur XPath comprend un ou plusieurs navigateurs 30 XPath 23 qui permettent à l'unité de contrôle d'exécution 22 de piloter de façon générique un ou plusieurs analyseurs XML 3. Les navigateurs XPath 23 sont également aptes à représenter les évènements XML reçus des analyseurs XML 2908539 13 3 sous la forme de noeuds XPath. Les navigateurs XPath 23 possèdent une mémoire tampon destinée si-besoin à stocker des noeuds XPath. Les analyseurs XML sont responsables de l'extraction d'informations XML à partir du flux ou d'un document 4 et de leur émission vers le processeur XPath 2. 5 L'évaluation d'une expression XPath est notamment décrite ci-après en référence aux Figures 4 et 5, et comprend une phase de compilation mise en oeuvre par exemple par le compilateur 21 et une phase d'évaluation mise en oeuvre par exemple par l'unité de contrôle d'exécution 22. En référence à la figure 3, un dispositif apte à fonctionner en tant que 10 dispositif d'évaluation d'une expression, notamment d'une expression XPath pour accéder à au moins une partie d'un document structuré est maintenant décrit dans sa configuration matérielle. Le dispositif de la figure 3 possède l'ensemble des moyens nécessaires à la mise en oeuvre du procédé d'évaluation d'une expression, 15 notamment d'une expression XPath pour accéder à au moins une partie d'un document structuré selon l'invention. Selon le mode de réalisation choisi, ce dispositif peut être par exemple un micro-ordinateur 300 connecté à différentes périphériques, par exemple, une caméra numérique 301 (ou un scanner, ou tout autre moyen 20 d'acquisition ou de stockage d'image) reliée à une carte graphique. Le micro-ordinateur 300 comporte de préférence une interface de communication 302 reliée à un réseau 303 apte à transmettre des informations numériques. Le micro-ordinateur 300 comporte également un moyen de stockage 304, tel que par exemple un disque dur, ainsi qu'un lecteur de disquette 305. 25 La disquette 306 comme le disque 304 peuvent contenir des données XML selon l'invention ainsi que le code de l'invention qui, une fois lu par le micro-ordinateur 300, sera stocké dans le disque dur 304. Selon une variante, le ou les programmes permettant au dispositif 300 de mettre en oeuvre l'invention sont stockés dans une mémoire morte ROM 307. 30 Selon une autre variante, le ou les programmes sont reçus totalement ou partiellement à travers le réseau de communication 303 pour être stockés comme indiqué. 2908539 14 Le micro-ordinateur 300 peut également être relié à un microphone 308 par l'intermédiaire d'une carte d'entrée/sortie (non représentée). Le micro-ordinateur 300 comprend également un écran 309 pour visualiser les résultats des évaluations à l'utilisateur. A l'aide du clavier 310 ou de tout autre moyen 5 approprié, l'utilisateur peut spécifier une expression XPath. L'unité centrale CPU 311 exécute les instructions relatives à la mise en oeuvre de l'invention, ces instructions étant stockées dans la mémoire morte ROM 307 ou dans les autres éléments de stockage décrits. Lors de la mise sous tension, les programmes et procédés d'évaluation 10 d'expression, notamment d'expression XPath, et d'extraction des événements XML stockés dans une des mémoires non-volatiles, par exemple la ROM 307, sont transférés dans la mémoire vive RAM 312 qui contiendra alors le code exécutable de l'invention ainsi que les variables nécessaires à la mise en oeuvre de l'invention. 15 En variante, les procédés peuvent être stockés dans différents emplacements de stockage du dispositif 300. De manière générale, un moyen de stockage d'information lisible par un ordinateur ou par un microprocesseur, intégré ou non au dispositif, éventuellement amovible, mémorise un programme dont l'exécution met en oeuvre le procédé d'évaluation d'expressions. Il est 20 aussi possible de faire évoluer le mode de réalisation de l'invention, par exemple, en ajoutant des méthodes d'évaluation actualisées ou améliorées qui sont transmises par le réseau de communication 303 ou chargées par l'intermédiaire d'une ou de plusieursdisquettes 306. Bien entendu, les disquettes 306 peuvent être remplacées par tout support d'information tel que CD-ROM ou carte 25 mémoire. Un bus de communication 313 permet la communication entre les différents éléments du micro-ordinateur 300 et les éléments reliés à celui-ci. On notera que la représentation du bus 313 n'est pas limitative. En effet, l'unité centrale CPU 311 est, par exemple, susceptible de communiquer des instructions 30 à tout élément du micro-ordinateur 300, directement ou par l'intermédiaire d'un autre élément du micro-ordinateur 300. 2908539 15 La Figure 4 illustre un algorithme de compilation d'une expression XPath mise en oeuvre dans le compilateur d'un processeur XPath conforme à l'invention. L'expression XPath à évaluer peut être spécifiée par un utilisateur ou 5 bien mémorisée par exemple dans un fichier et lu par l'application 1. Selon un autre mode de réalisation, l'expression XPath résulte de l'exécution par l'application d'un programme générant des expressions XPath. L'expression est reçue par le processeur XPath 2 lors de l'étape E41. L'étape E42, qui suit l'étape E41 consiste à débuter l'analyse lexicale 10 de l'expression. Pour ce faire et selon un mode de réalisation, il est analysé un à un les caractères de l'expression XPath pour ensuite regrouper les caractères et former des symboles, aussi connus sous le terme anglo-saxon tokens . Le regroupement des caractères permet de déterminer notamment les symboles réservés définis dans la spécification XPath, par exemple le 15 caractère / , ou des classes de caractères représentant par exemple des chiffres ou des caractères simples. L'étape E42 est suivie de l'étape E43 au cours de laquelle on vérifie la validité des symboles déterminés. Si lors de l'étape E43, il est détecté un symbole invalide, non permis 20 ou inconnu, alors l'étape E43 est suivie de l'étape E44 au cours de laquelle le compilateur termine son exécution et informe le processeur XPath 2 de la non-conformité de l'expression. Si lors de l'étape E43, il n'est pas détecté un symbole invalide, non permis ou inconnu, alors l'étape E43 est suivie de l'étape E45 au cours de 25 laquelle l'étape d'analyse grammaticale est exécutée. Cette étape consiste pour le compilateur 21 à parcourir la liste de symboles déterminés lors de l'étape E42 et à identifier les types d'expression définis par la syntaxe XPath 1.0 dans l'expression à compiler. Par exemple, si le premier symbole trouvé correspond à / , alors 30 l'expression est relative à un chemin de localisation absolu ( AbsoluteLocationPath selon la syntaxe XPath) au sens de la grammaire XPath. Dans ce cas, le compilateur 21 poursuit l'analyse des symboles pour 2908539 16 identifier les composantes du chemin ( LocationPath selon la syntaxe XPath), c'est-à-dire les étapes de localisation, qui peuvent être composées d'entités exprimant une relation de filiation ( AxisSpecifier selon la syntaxe XPath), un test d'éligibilité ( NodeTest selon la syntaxe XPath) et 5 éventuellement un ou plusieurs prédicats. Lors de cette même étape E45, dès que le compilateur identifie une expression de localisation, il initialise un navigateur XPath 23 qui prendra en charge la recherche de noeuds candidats à la résolution de cette expression. Ce traitement est décrit ci-après en référence aux figures 6 et 7. 10 L'étape E45 est suivie de l'étape E46 au cours de laquelle on vérifie que l'expression, c'est-à-dire la suite de symboles, est valide au sens de la grammaire XPath. Dans la négative, l'étape E46 se poursuit à l'étape E44 précédemment décrite. 15 Au contraire, si l'expression est valide, alors l'algorithme se poursuit à l'étape E47 au cours de laquelle le compilateur 21 alloue en mémoire une structure de représentation de chaque composante de l'expression. Cette étape est suivie de l'étape E48 qui consiste à analyser les étapes de localisation extraites par le compilateur 21 lors de l'étape E45. Cette 20 étape est décrite plus en détail ci-après en référence à la Figure 5. Lors de cette étape, on détermine, pour chaque étape de localisation de chaque expression relative à un chemin de localisation, le mode de test qui doit être effectué par l'unité de contrôle d'exécution 22 lors de l'évaluation de cette étape de localisation. 25 Selon un mode de réalisation conforme à l'invention, deux types de test peuvent être réalisés : soit le simple test d'éligibilité ( NodeTest en terminologie anglo-saxonne) soit un test du noeud approfondi, ce dernier est décrit ci-après en référence à la Figure 10. A l'issue de cette analyse, le compilateur 21 informe l'unité de 30 contrôle d'exécution 22 de la fin de l'analyse, ce dernier va alors démarrer l'évaluation de l'expression (étape E49). 2908539 17 L'étape E48 de la Figure 4 détermine pour chaque étape de localisation de chaque expression relative à un chemin de localisation d'une expression XPath le mode de test à appliquer lors de son évaluation. Différents modes de test peuvent être envisagés. 5 Tout d'abord, le mode de test normal correspond à la simple application du test d'éligibilité correspondant à l'étape de localisation. Selon un mode de réalisation particulier, il s'agit du mode par défaut, notamment lorsque la représentation de l'étape de localisation est construite par le compilateur. 10 Ensuite, un mode de test peut consister au mode approfondi. Celui-ci nécessite un test sur l'historique du noeud candidat. Enfin, un mode de test peut consister à ne réaliser aucun test. Ce mode de test correspond à certaines combinaisons d'entité exprimant une relation de filiation ( AxisSpecifier ) et de test d'éligibilité. Dans ce cas, tout 15 noeud candidat est un résultat pour l'étape de localisation. On parlera alors d'étape virtuelle de localisation ( VirtualStep en terminologie anglo-saxonne). Selon un mode de réalisation particulier, l'étape E48 est réalisée en même temps que l'étape E47 consistant à construire des structures de représentation. 20 Il est maintenant décrit l'analyse des étapes de localisation en référence à la Figure 5. L'analyse des étapes de localisation issues de la compilation débute par l'étape E500 consistant à l'obtention de la structure construire par le compilateur lors de l'étape E47 de la Figure 4 représentant l'expression relative 25 à un chemin de localisation dont les étapes de localisation vont être analysées. Cette structure comprend une liste des étapes de localisation qui composent l'expression relative à un chemin de localisation. La première étape de localisation est récupérée lors de l'étape E501. La représentation de l'étape de localisation mémorise des références sur les 30 structures qui la composent, par exemple la représentation de l'entité exprimant une relation de filiation et du test d'éligibilité ainsi qu'une représentation du type de noeud attendu comme solution. 2908539 18 Par exemple, cette représentation comprend le type, un préfixe, un nom, un incrément de profondeur par rapport au noeud contexte. La valeur de l'entité exprimant une relation de filiation de l'expression relative à un chemin de localisation est ainsi obtenue lors de l'étape E502, au 5 moyen notamment de la référence contenue dans la structure de représentation de l'étape de localisation. L'étape E502 est suivie de l'étape E503 consistant à tester la valeur de l'entité afin de déterminer s'il s'agit d'une relation de filiation de type descendant ( descendant selon la syntaxe XPath). 10 Si le test est positif, alors l'étape E503 est suivie de l'étape E504 au cours de laquelle l'incrément de profondeur du noeud attendu est mis à une valeur de manière à représenter l' infini . Cette étape est ensuite suivie de l'étape E505 consistant à déterminer si la structure de représentation de l'étape de localisation comprend 15 une étape de localisation suivante. S'il n'y a pas d'étape de localisation suivante, alors l'algorithme se poursuit à l'étape E506 consistant à déterminer s'il existe une expression relative à un chemin de localisation suivante à traiter. Dans le cas positif, l'algorithme se poursuit à l'étape E501 20 précédemment décrite. Si le test de l'étape E506 est négatif, alors il est mis fin à l'algorithme de la Figure 5. De retour à l'étape E505, s'il existe une étape de localisation suivante à traiter, alors l'algorithme se poursuit à l'étape E507. 25 L'étape E507 consiste à marquer l'étape de localisation suivante comme devant subir un test approfondi. Ensuite, cette étape est suivie de l'étape E502 précédemment décrite au cours de laquelle l'étape de localisation suivante est analysée. De retour à l'étape E503, si la valeur de l'entité détermine une 30 relation de filiation différente du type descendant, alors l'algorithme se poursuit à l'étape E508 au cours de laquelle on teste cette entité afin de déterminer si la valeur reflète une relation de type descendant ou lui-même ( descendant-or- 2908539 19 self selon la syntaxe XPath) c'est-à-dire de profondeur quelconque, y compris la profondeur courante. Si le test est négatif, alors l'algorithme se poursuit à l'étape E509 consistant à affecter la valeur 1 à l'incrément de profondeur. 5 A l'issue de cette étape, l'algorithme se poursuit à l'étape E510 consistant à déterminer s'il existe une étape de localisation suivante à traiter. Si tel est le cas, l'étape E510 est suivie de l'étape E502 précédemment décrite au cours de laquelle l'étape de localisation suivante est analysée. 10 S'il n'y a pas d'étape de localisation suivante, alors l'algorithme se poursuit à l'étape E506, précédemment décrite, consistant à déterminer s'il existe une expression relative à un chemin de localisation suivant à traiter. De retour à l'étape E508, si le test est positif, c'est-à-dire si l'entité reflète une relation de type descendant ou noeud contexte, alors l'algorithme se 15 poursuit à l'étape E511 au cours de laquelle on teste la valeur du test d'éligibilité de l'étape de localisation courante. Si cette valeur correspond à un test sur le type noeud ( node() selon la syntaxe XPath), alors l'algorithme se poursuit à l'étape E512. En effet, dans ce cas, l'étape de localisation est considérée comme étant une étape de 20 localisation virtuelle ( Step Virtuel selon la syntaxe XPath). Pour cette raison, l'étape E512 consiste à marquer cette étape de localisation comme étant virtuelle. L'algorithme se poursuit à l'étape E510 précédemment décrite. De retour à l'étape E511, si le test est négatif, alors l'algorithme se 25 poursuit à l'étape E513 consistant à marquer l'étape de localisation comme devant subir un test normal. Lors de cette même étape, l'incrément de profondeur du noeud attendu est mis à une valeur indiquant l' infini . Toutefois, l'étape de localisation suivante obtenue lors de l'étape 30 E505 sera marquée à l'étape E506 comme devant subir un test approfondi. A l'issue de cet algorithme, l'unité de contrôle d'exécution 22 dispose d'une représentation de l'expression XPath sous forme de structures de 2908539 20 données. Ensuite, l'évaluation de l'expression peut débuter tel que décrit à l'étape E48 de la figure 4, sur les données d'un flux XML soit reçu par le réseau soit provenant d'un document. Il est maintenant décrit l'évaluation d'une expression XPath 5 conformément à l'invention en référence à la Figure 6. L'évaluation d'une expression XPath est réalisée à partir de la structure générée par le compilateur notamment tel que décrit en référence à la Figure 5. A chaque type d'expression de la syntaxe XPath, est associée une 10 structure de représentation avec des références sur la (ou les) sousexpression(s) qui la compose(nt). En outre, à chaque structure est associée une liste d'instructions à exécuter pour son évaluation. Cette liste comprend notamment un appel à l'exécution de la (ou des) sous expression(s) et des instructions pour gérer les 15 erreurs et/ou les résultats. Par exemple pour une expression de type addition ( AdditiveExpr selon la syntaxe XPath), la liste d'instructions serait : évaluer l'opérande de gauche, évaluer l'opérande de droite puis appliquer l'opérateur + sur ces 2 opérandes. L'algorithme d'évaluation d'une expression XPath débute par l'étape 20  evaluating an expression, in particular an XPath-type expression on the data contained in a structured document. It finds a general application in the processing of XML data streams and more specifically on files in XML format. The XPath (acronym for XML Path Language) is derived from a W3C consortium specification called XPath Specification 1.0, available at www.w3.org/TR/xpath. The purpose of this language is to define a syntax suitable for addressing parts of a structured document of the XML type. The syntax of this language uses a syntax similar to that used in expressions relating to location paths in a file system, for example the expression relating to a location / library / book path. The XPath language defines four types of data that are string, Boolean, number and set of nodes, seven types of nodes, and expressions for manipulating the data, including the defined operators equality, difference, inferiority, superiority, addition, subtraction, multiplication, division, modulo, or binary and and binary. When at the nodes, they can represent different types of XML event, for example the beginning of the document (also called the root node), an element, an attribute, a text, a comment, a processing instruction (processing-instruction in English terminology) and a 2 2908539 2 namespace (namespace in Anglo-Saxon terminology). This syntax allows the expression of queries on structured documents in view, for example of their transformation (for example the XSLT transformation according to the W3C recommendation defined at the address www.w3.org/TR/xslt), of the fast access to subparts (for example according to the W3C recommendation: XPointer: www.w3.org/TR/WD-xptr) or performing processing on parts of the document (for example according to XQuery 1.0 , defined at www.w3.org/TR/xquery). The XPath language makes it possible to simplify the development of applications capable of traversing data in structured documents of the XML type. The entity capable of performing the evaluation of an XPath expression is called XPath processor (XPath Processor in English terminology). From an XPath expression and a reference to XML data stored in a document or received via a network transmission, the XPath processor evaluates the expression. The XPath syntax also defines a grammar describing the construction rules of different expressions and subexpressions. These expressions include expressions that return a boolean (for example, the expressions OrExpr, AndExpr, RelativeExpr, EqualityExpr), expressions that return a number (for example, AdditiveExpr, MultiplicativeExpr), expressions that return any type of data (for example, for example, FilterExpr and FunctionCall expressions), and expressions returning an ordered list of nodes (for example, LocationPath expressions corresponding to the specification of a path to be resolved in an XML document). The invention is particularly suitable for expressions relating to a location path (LocationPath according to the XPath syntax). An expression relating to a location path may be absolute or relative depending on whether it begins with / or not. In the case of an expression relating to an absolute path, the search starts from the beginning of the document, also called the root, whereas in the case of an expression relative to a relative path, the search is contextual, for example from the current node. Any expression relating to a location path is composed of a set of expressions indicating the location steps in this path (Steps in English terminology), and each location step corresponding to a level of decomposition for the evaluation. of the expression relating to a location path. Indeed, each location step can be mapped to a depth level in the XML document. For example, the expression relating to the path / library / book includes two localization steps which are on the one hand a library, searched for in depth 1 and on the other hand a book, searched for in depth 2. The evaluation of a The locating step is in particular based on the expression of the parent location step, ie the previous location step in the expression. The result of the evaluation of a location step provides the evaluation context for the next location step. This context is composed of three elements: a node called context node, a position and a size. The context node is the node in the document that verifies the previous location step, the position indicates the rank of the solution node of the current location step among its siblings, the context size indicates the number of solution nodes of the current location step. Any location step includes one to three of the following 25 entities. First, the entity expressing a filiation, also called axes, (AxisSpecifier according to the XPath syntax) describes the relationship between a context node and the solution nodes of a location step. This entity is optional. For example, the expressions / a / child :: b and / a / attribute :: b 30 mean that we look for, respectively, a child node b of a node a and a node representing a attribute b son of a child. node a. The specification defines 13 entity types expressing an affiliation relation 2908539 4 (AxisSpecifier) which are: self, child, attribute (or @), namespace, descendant, descendant-or-self, following, following-sibling which are considered as descendant expressions (forward axes in English) and parent, ancestor, ancestor-or-self, preceding and preceding-sibling which are considered as expressions of ascending parentage (backward or reverse axes in English). Next, the entity expressing an eligibility test of a candidate node (NodeTest according to the XPath syntax) defines either a type constraint or a name constraint that the candidate nodes must satisfy to be considered as a solution of a step location. This entity is mandatory. The syntax defines various tests on the type of nodes, notably the node () constraint according to the XPath syntax), the text constraint (XPath syntax), the comment type constraint ( how ()), according to the XPath syntax) and the processing-instruction () according to the XPath syntax). For example, the expression / child :: b imposes a name constraint while the / descendant :: commentO expression searches for all comment type nodes. Finally, the entity expressing a predicate (Predicate according to the XPath syntax) makes it possible to impose one or more additional conditions for searching for solution nodes of a location step. This entity is optional. An expression called predicate, enclosed in square brackets, follows the same construction rules as any XPath expression. For example, the expression / a / b [2] makes it possible to select all the second child elements of name b from each node of type element of name a, and the expression / a / b [@ id = 3] makes it possible to select the name threads of name element node a having an id attribute with a value of 3. The current XPath implementation provides access to parts of an XML document after constructing a representation 2908539 The intermediate of the XML document can facilitate the search, in particular in the form of a tree representing a model of objects of the document (Document Object Model or DOM in English terminology defined at the address www.w3.org/DOM ). Thus the search consists in traversing this tree as many as 5 times as necessary for the extraction of the requested nodes. Such an approach poses a double problem. This solution is expensive in memory space especially in the case of large XML documents. Indeed, if an XPath processor is implanted in a camera, photocopier or other type of apparatus with limited resources, the intermediate representation may be too large to be stored. Moreover, this solution proves costly in execution time because of the multiple paths on the DOM tree when searching for solution nodes of the XPath expression. The on-the-fly evaluation of an XPath expression consists in the ideal case of processing the XML events as they are received by the XPath processor. Thus, for each received event, the XPath processor decides whether or not the node satisfies the constraints of the current location step until the last location step expressed in the expression relating to a location path. However, determining compliance with the constraints of an XML event is not always possible at the moment the XPath processor receives and processes this event. This is particularly the case when the expression relating to a location path contains predicates. The example illustrated in FIG. 1 comprises an example of an XML document (0.1) where each line read represents an event to be processed (0.2). It is illustrated by the evaluation of the expression / a / b [b]. This evaluation will produce as a result <b val = 123 attr2 = blabla> when the event <B> b0 </ b> will be received (0. 3).  In addition, an additional problem is the problem of nested solutions.  This one corresponds to the application of the entities expressing a filiation 30 of type descendant (descendant according to the syntax XPath) and of type descendant or node context (descendant-or-self according to the syntax XPath) on recursive XML documents.  According to the example illustrated in FIG. 1, an expression of the type // b / c (i. e.  / Descendant-or-self. -: node0 / b / c) which consists of searching all the nodes of type element name c child of node of type element of name b being at any depth of the XML document poses the following problems.  First, during the evaluation, the correspondence between a location step and the depth in the XML document is lost.  Indeed, in the above expressions, the search is not limited to the search for elements b having a depth of two and elements 10 c having a depth of three.  Then, when searching for elements c solving the step of location of level three, the processor must first detect any b elements encountered as a solution of the level two location step and on which c son nodes are sought .  Thus, the resolution of the above expression can be seen as the search for the b / c pattern at any depth level.  The on-the-fly evaluation, to be complete, must also allow the results to be issued as and when they are determined.  It is known from document US2004068487 entitled Method for 20 streaming XPath processing with forward and backward axes a method capable of evaluating expressions on the fly in which the XPath expressions containing ascending parenting relations (reverse axes according to the XPath syntax) are re-evaluated. written.  This evaluation method is performed from a representation of the expression in the form of a tree (XTree) of the XML document.  This tree makes it possible to obtain relations of filiation forward and thus to guarantee a single course of the XML flow.  However, according to this method, the XPath processor must analyze all the nodes provided by an XML parser, which can lead in the case of the simplest expressions to an extra cost in evaluation time.  For each node thus received, the processor returns a status: solution, no solution or potential solution.  According to US20040172599 entitled Systems and methods for streaming XPath queries, there is described an XPath processor compatible with on-the-fly processing.  According to this method, the processor receives events from an analyzer, decides on the correspondence character of these events with respect to an expression and informs an application using the result nodes.  This solution has the same disadvantages as the previous one namely the exhaustive analysis of all the nodes of the XML flow.  In view of the foregoing, it would therefore be of interest to be able to evaluate expressions, including XPath expressions on the fly by limiting multiple paths and storing structured data and bypassing at least some of the mentioned drawbacks. above.  The present invention aims first of all at providing a method of evaluating an expression for accessing at least a part of a structured document by means of at least one browser able to extract the structured data from the document, the expression being composed of at least two sub-expressions each relating to a location path, characterized in that it comprises a step of evaluating each of the subexpressions on the basis of the data of the document by means of at least one 20 separate browser for each subexpression.  The method for evaluating an expression, in particular an XPath type expression, for accessing at least a portion of a structured document by means of at least one browser able to extract the structured data from the document according to the invention makes it possible to to determine the data of the document satisfying the expression.  The expression is composed of at least two sub expressions each relating to a location path.  According to the invention, each of the subexpressions relating to a location path is evaluated on the data of the document from at least one separate browser.  Thus, it is permissible to evaluate expressions on the fly by limiting, on the one hand, the data storage of the structured document and, on the other hand, limiting the multiple paths of the structured document in an optimized mode.  The method further provides the results as soon as they are calculated.  To do this, the method according to the invention uses several browsers able to process the subexpressions of the expression.  According to one particular characteristic, the method comprises a preliminary step of determining the number of browsers.  Thus, the number of browsers is chosen so as to optimize the processing of a given expression.  According to another particular characteristic, each subexpression relating to a path comprises a set of location steps.  According to a particular characteristic, each location step comprises at least one entity expressing a filiation between the structured data.  According to another particular characteristic, filiation is an indirect filiation.  According to a particular characteristic, the method comprises a step of determining subexpressions having at least one entity expressing indirect filiation.  According to one particular characteristic, the method comprises an in-depth test step on said at least one entity expressing indirect filiation, the in-depth test being a function of conditions on the data and on the previous evaluations of said data.  According to a particular characteristic, the method comprises: a step of extracting the data on the basis of which the subexpressions are evaluated; and a step of storing the extracted data.  The in-depth test makes it possible to extract results and in particular any nested (or nested) results regardless of their depth by only storing part of their history and without multiple paths.  According to a particular characteristic, when evaluating a second subexpression following a first subexpression, the at least one browser of the second subexpression is initialized with the browser context of the first subexpression. subexpression.  Thus, the browser used to analyze the second subexpression is able to resume processing at the same level as the browser used for the first subexpression.  According to a particular characteristic, each of said browsers controls at least one parser of the structured document.  According to a particular characteristic, if browsers use the same analyzer, the data extracted by a browser is reused by another browser using this same analyzer.  According to a particular characteristic, the method comprises a step of determining the data extracted from the document verifying all the subexpressions.  According to a particular characteristic, as soon as data are determined, said data is provided to an application capable of processing these data.  According to the invention, an application is allowed to obtain the results of the evaluation as and when the data satisfying the expression are determined.  The invention allows the transmission of data as it goes, which makes it possible to process the data more quickly at the application level, without having to wait for the complete processing and therefore without necessarily resorting to the storage of these results.  According to a particular characteristic, the determined data are stored.  According to a particular characteristic, if specific data have a direct or indirect affiliation relationship with previously determined data, then these data are sent after the previously determined data.  Furthermore, according to this characteristic, the data satisfying the expression are issued in the order of the document.  This makes it possible to be compatible, in particular, with the XPath 1 specification. 0.  According to a particular characteristic, the transmission of the determined data is preceded by a start signal and is followed by an end signal.  This allows the application to be informed of the beginning and the end of a result, which allows it to immediately process this result.  Thus, according to this characteristic, the application that receives the data satisfying the expression has no separation of the results to be performed.  Correlatively, the invention also provides a device for evaluating an expression for accessing at least a portion of a structured document by means of at least one browser able to extract the structured data from the document, the expression being composed of at least two sub-expressions each relating to a location path, characterized in that it comprises means for evaluating each of the subexpressions on the basis of the data of the document by means of at least one browser distinct for each subexpression.  This device has the same advantages as the evaluation method of an expression briefly described above and they will not be recalled here.  In other aspects, the invention also relates to computer programs for carrying out the method of the invention described briefly above.  Other aspects and advantages of the present invention will appear more clearly on reading the following description, this description being given solely by way of nonlimiting example and with reference to the appended drawings, in which: FIG. 1 represents an example of an XML document on which an expression is evaluated; FIG. 2 illustrates the application context of the invention; FIG. 3 schematically represents an apparatus in which the invention is implemented; FIG. 4 illustrates an algorithm for compiling an XPath expression according to the invention; FIG. 5 illustrates an analysis algorithm for expressions of filiation according to the invention; FIG. 6 represents an evaluation algorithm of an XPath expression according to the invention; FIG. 7 illustrates an evaluation algorithm for expressions of filiation according to the invention; FIG. 8 illustrates an algorithm for searching a candidate node 10 according to the invention; FIG. 9 illustrates a test algorithm according to the normal mode according to the invention; FIG. 10 illustrates a test algorithm according to the in-depth mode according to the invention; FIG. 11 illustrates the evaluation of an XPath expression on an XML document according to the invention; FIG. 12 illustrates an early signal processing by a browser according to the invention; FIG. 13 illustrates a processing of any XML event retrieved by the browser; and FIG. 14 illustrates an algorithm processing the nested results.  The invention consists in evaluating expressions, in particular XPath expressions, on the fly by limiting both the multiple paths and the storage of data, in particular XML data, to access at least part of a structured document.  More particularly, the description will relate to the evaluation of the expressions relating to a location path (XPath syntax LocationPath) containing descent expression entity entities (AxisSpecifier according to XPath syntax) (forward AxisSpecifier in English terminology). Saxon), that is, the entities that specify the parent or node descendants relationship to a given context node.  In addition, the description of the invention includes providing to an application the results of the evaluation as they are determined.  For this, the XPath processor uses several XML parsers also called XML (XML Parser) browsers.  As described below, the number of browsers can be determined in advance.  These can be enabled or disabled and can be synchronized as soon as necessary.  In addition, the invention makes it possible to detect and process the nested solutions, in particular by activating as soon as necessary the memorization of a history of the nodes processed by the analyzer and by carrying out an in-depth test on these nodes.  However, a prior step of analyzing the location steps from the compilation is necessary.  FIG. 2 illustrates the application context of the invention in which an application 1 processes XML data extracted by an XPath processor 2 by means of one or more XML analyzers 3 from an XML data stream 4, an XML parser can be an XML browser.  According to one embodiment, the XPath processor 2 comprises three entities.  First, it includes a compiler 21 whose role is to analyze the expressions and translate them into an internal representation.  The operation of this compiler is described below with reference to FIG. 4.  Next, the XPath processor comprises a execution control unit 22 able to manage, on the one hand, the interactions between the different modules of the XPath processor and, on the other hand, the communication of the XPath processor with the application 1. .  In addition, it supports the evaluation of nodes.  In addition, the XPath processor includes one or more XPath browsers 23 that enable the execution control unit 22 to generically drive one or more XML parsers 3.  The XPath browsers 23 are also able to represent the XML events received from the XML parsers 2908539 13 3 as XPath nodes.  XPath browsers 23 have a buffer, if necessary, to store XPath nodes.  XML parsers are responsible for extracting XML information from the stream or document 4 and sending it to the XPath processor 2.  The evaluation of an XPath expression is described in particular with reference to FIGS. 4 and 5, and comprises a compilation phase implemented for example by the compiler 21 and an evaluation phase implemented for example by the execution control unit 22.  With reference to FIG. 3, a device capable of functioning as a device for evaluating an expression, in particular an XPath expression for accessing at least a portion of a structured document, is now described in its hardware configuration. .  The device of FIG. 3 possesses all the means necessary for carrying out the method of evaluating an expression, in particular an XPath expression, for accessing at least a portion of a structured document according to FIG. invention.  According to the embodiment chosen, this device may be for example a microcomputer 300 connected to different peripherals, for example a digital camera 301 (or a scanner, or any other means 20 for acquiring or storing an image) connected to a graphics card.  The microcomputer 300 preferably comprises a communication interface 302 connected to a network 303 capable of transmitting digital information.  The microcomputer 300 also comprises a storage means 304, such as for example a hard disk, as well as a floppy disk drive 305.  Disk 306 as disk 304 may contain XML data according to the invention as well as the code of the invention which, once read by microcomputer 300, will be stored in hard disk 304.  According to one variant, the program or programs enabling the device 300 to implement the invention are stored in a ROM 307.  According to another variant, the program or programs are totally or partially received through the communication network 303 to be stored as indicated.  The microcomputer 300 may also be connected to a microphone 308 via an input / output card (not shown).  The microcomputer 300 also includes a screen 309 for viewing the results of the evaluations to the user.  Using the keyboard 310 or any other suitable means, the user can specify an XPath expression.  The CPU 311 executes the instructions relating to the implementation of the invention, these instructions being stored in the ROM ROM 307 or in the other storage elements described.  Upon power-up, programs and methods for evaluating expression, including XPath expression, and extracting XML events stored in one of the nonvolatile memories, for example ROM 307, are transferred to RAM RAM 312 which will contain the executable code of the invention and the variables necessary for the implementation of the invention.  Alternatively, the methods may be stored in different storage locations of the device 300.  In general, a means for storing information that can be read by a computer or by a microprocessor, whether or not integrated into the device, possibly removable, stores a program the execution of which implements the method for evaluating expressions.  It is also possible to change the embodiment of the invention, for example, by adding updated or improved evaluation methods which are transmitted by the communication network 303 or loaded via one or several discs 306.  Of course, floppy disks 306 can be replaced by any information medium such as CD-ROM or memory card.  A communication bus 313 allows communication between the different elements of the microcomputer 300 and the elements connected thereto.  Note that the representation of the bus 313 is not limiting.  Indeed, the CPU 311 is, for example, capable of communicating instructions to any element of the microcomputer 300, directly or via another element of the microcomputer 300.  FIG. 4 illustrates an algorithm for compiling an XPath expression implemented in the compiler of an XPath processor according to the invention.  The XPath expression to be evaluated may be specified by a user or stored for example in a file and read by the application 1.  According to another embodiment, the XPath expression results from the execution by the application of a program generating XPath expressions.  The expression is received by the XPath processor 2 in step E41.  Step E42, which follows step E41, begins the lexical analysis of the expression.  To do this and according to one embodiment, it is analyzed one by one the characters of the XPath expression to then group the characters and form symbols, also known as Anglo-Saxon Tokens.  The grouping of characters makes it possible to determine in particular the reserved symbols defined in the XPath specification, for example the / character, or character classes representing, for example, digits or simple characters.  Step E42 is followed by step E43 in which the validity of the determined symbols is checked.  If in step E43 an invalid, not allowed or unknown symbol is detected, then step E43 is followed by step E44 in which the compiler completes its execution and informs the XPath processor 2 of the non-conformity of the expression.  If in step E43, an invalid, not allowed or unknown symbol is not detected, then step E43 is followed by step E45 during which the parsing step is executed.  This step is for the compiler 21 to browse the list of symbols determined in step E42 and identify the types of expression defined by the XPath syntax 1. 0 in the expression to compile.  For example, if the first found symbol corresponds to /, then the expression is relative to an absolute localization path (AbsoluteLocationPath according to the XPath syntax) in the sense of the XPath grammar.  In this case, the compiler 21 continues the analysis of the symbols to identify the components of the path (LocationPath according to the XPath syntax), that is to say the location steps, which can be composed of entities expressing a filiation relation (AxisSpecifier according to the XPath syntax), an eligibility test (NodeTest according to the XPath syntax) and possibly one or more predicates.  During this same step E45, as soon as the compiler identifies a localization expression, it initializes an XPath navigator 23 which will support the search for candidate nodes for the resolution of this expression.  This treatment is described below with reference to FIGS. 6 and 7.  Step E45 is followed by step E46 in which it is verified that the expression, i.e., the symbol sequence, is valid in the sense of the XPath grammar.  If not, step E46 continues in step E44 previously described.  On the contrary, if the expression is valid, then the algorithm proceeds to step E47 during which the compiler 21 allocates in memory a representation structure of each component of the expression.  This step is followed by step E48 which consists of analyzing the localization steps extracted by the compiler 21 during step E45.  This step is described in more detail below with reference to Figure 5.  During this step, it is determined, for each location step of each expression relating to a location path, the test mode that must be performed by the execution control unit 22 during the evaluation of this step of location.  According to one embodiment according to the invention, two types of test can be performed: either the simple eligibility test (NodeTest in English terminology) or a test of the deep node, the latter is described below in reference to Figure 10.  After this analysis, the compiler 21 informs the execution control unit 22 of the end of the analysis, the latter will then start the evaluation of the expression (step E49).  Step E48 of FIG. 4 determines for each location step of each expression relating to a location path of an XPath expression the test mode to be applied during its evaluation.  Different test modes can be envisaged.  First of all, the normal test mode corresponds to the simple application of the eligibility test corresponding to the location step.  According to a particular embodiment, this is the default mode, especially when the representation of the location step is constructed by the compiler.  Next, a test mode may consist of the deep mode.  This requires a test on the history of the candidate node.  Finally, a test mode may consist of not performing any test.  This test mode corresponds to certain combinations of entities expressing a relation of filiation (AxisSpecifier) and of eligibility test.  In this case, any candidate node is a result for the location step.  We will then speak of virtual location step (VirtualStep in English terminology).  According to a particular embodiment, step E48 is performed at the same time as step E47 of constructing representation structures.  The analysis of locating steps is now described with reference to Figure 5.  The analysis of the location steps from the compilation starts with step E500 of obtaining the structure built by the compiler in step E47 of Figure 4 representing the expression relative to a location path whose location steps will be analyzed.  This structure includes a list of location steps that make up the expression relating to a location path.  The first location step is retrieved during step E501.  The representation of the location step stores references to the structures that compose it, for example the representation of the entity expressing a filiation relationship and the eligibility test as well as a representation of the type of node expected as a solution. .  For example, this representation comprises the type, a prefix, a name, a depth increment with respect to the context node.  The value of the entity expressing a relation of filiation of the expression relating to a location path is thus obtained during step E502, in particular by means of the reference contained in the representation structure of the location step .  The step E502 is followed by the step E503 of testing the value of the entity to determine whether it is a descending parent relationship (descending according to the XPath syntax).  If the test is positive, then step E503 is followed by step E504 in which the depth increment of the expected node is set to a value to represent infinity.  This step is then followed by step E505 of determining whether the representation structure of the locating step comprises a next locating step.  If there is no next location step, then the algorithm proceeds to step E506 of determining whether there is an expression relating to a next location path to be processed.  In the positive case, the algorithm continues in step E501 previously described.  If the test of step E506 is negative, then the algorithm of FIG. 5 is terminated.  Returning to step E505, if there is a next location step to be processed, then the algorithm proceeds to step E507.  Step E507 is to mark the next location step as undergoing a thorough test.  Then, this step is followed by the previously described step E502 during which the next location step is analyzed.  Returning to step E503, if the entity value determines a different descent relationship than the descending type, then the algorithm proceeds to step E508 in which the entity is tested to determine whether the value reflects a descendant-type relationship or itself (that is, of any depth, including the current depth).  If the test is negative, then the algorithm proceeds to step E509 of assigning the value 1 to the depth increment.  At the end of this step, the algorithm proceeds to step E510 of determining whether there is a next location step to be processed.  If this is the case, step E510 is followed by the previously described step E502 during which the next location step is analyzed.  If there is no next location step, then the algorithm proceeds to step E506, previously described, of determining whether there is an expression relating to a next location path to be processed.  Back to step E508, if the test is positive, that is, if the entity reflects a downlink or context node relationship, then the algorithm proceeds to step E511 during which one tests the value of the eligibility test of the current location step.  If this value corresponds to a test on the node () according to the XPath syntax, then the algorithm continues in step E512.  Indeed, in this case, the location step is considered to be a virtual location step (Virtual Step according to the XPath syntax).  For this reason, step E512 is to mark this location step as virtual.  The algorithm continues in step E510 previously described.  Returning to step E511, if the test is negative, then the algorithm proceeds to step E513 of marking the locating step as undergoing a normal test.  During this same step, the depth increment of the expected node is set to a value indicating infinity.  However, the next location step obtained in step E505 will be marked in step E506 as being for further testing.  At the end of this algorithm, the execution control unit 22 has a representation of the XPath expression in the form of data structures.  Then, the evaluation of the expression can begin as described in step E48 of FIG. 4, on the data of an XML stream either received by the network or originating from a document.  The evaluation of an XPath expression according to the invention is now described with reference to FIG.  The evaluation of an XPath expression is performed from the structure generated by the compiler, particularly as described with reference to FIG. 5.  Each expression type of the XPath syntax is associated with a representation structure with references to the sub-expression (s) that compose it.  In addition, each structure is associated with a list of instructions to be executed for its evaluation.  This list includes in particular a call for the execution of the sub expression (s) and instructions for handling the errors and / or the results.  For example, for an expression of type addition (AdditiveExpr according to the XPath syntax), the list of instructions would be: evaluate the operand on the left, evaluate the operand on the right and then apply the + operator on these 2 operands.  The evaluation algorithm of an XPath expression starts with step 20

E600, consistant à exécuter la liste des instructions associée à l'expression de plus haut niveau. Selon la syntaxe du langage XPath, l'expression de plus haut niveau est identifié par l'entité Expr . Cette exécution déclenche en cascade l'exécution des sous-expressions qui composent l'expression XPath jusqu'au niveau de la (ou des) expression(s) relative(s) à un chemin de localisation.  E600, consisting of executing the statement list associated with the higher level expression. According to the XPath syntax, the higher-level expression is identified by the Expr entity. This execution cascades the execution of the subexpressions that make up the XPath expression up to the level of the expression (s) relating to a location path.

25 L'algorithme se poursuit à l'étape E601 par le lancement de l'exécution de l'expression relative à un chemin de localisation. Cette étape est suivie de l'étape E602 au cours de laquelle l'unité de contrôle d'exécution 22 vérifie si cette expression représente l'expression principale ou si cette expression est issue par exemple d'un prédicat.The algorithm continues in step E601 by launching the execution of the expression relating to a location path. This step is followed by the step E602 during which the execution control unit 22 checks whether this expression represents the main expression or if this expression is issued for example from a predicate.

30 Si tel est le cas, alors l'algorithme se poursuit à l'étape E603 au cours de laquelle l'unité de contrôle d'exécution 22 fait appel à son navigateur 2908539 21 XPath 23 principal. Si ce dernier n'a pas été initialisé, alors un analyseur 3 d'un flux de données XML 4 est créé et relié au navigateur XPath 23 principal. L'unité de contrôle d'exécution 22 est ensuite apte à lancer l'évaluation des étapes de localisation de l'expression relative à un chemin de 5 localisation selon l'étape E606 qui est détaillée ci-après en référence à la Figure 7. De retour à l'étape E602, si la vérification est négative, alors l'unité de contrôle d'exécution 22 initialise un navigateur XPath 23. Toutefois, lors de l'étape E604 qui suit l'étape E602, les valeurs des variables d'état du navigateur 10 en cours d'utilisation, désigné par navigateur de référence, sont mémorisées. Cette étape est suivie de l'étape E605 au cours de laquelle le navigateur initialisé par l'unité de contrôle d'exécution 22 va être synchronisé avec le navigateur de référence. Cette étape de synchronisation est réalisée notamment en 4 étapes.If so, then the algorithm proceeds to step E603 in which the execution control unit 22 uses its main browser XPath 23. If the latter has not been initialized, then an analyzer 3 of an XML data stream 4 is created and connected to the main XPath browser 23. The execution control unit 22 is then able to launch the evaluation of the steps of locating the expression relating to a location path according to the step E606 which is detailed hereinafter with reference to FIG. 7. Back to step E602, if the check is negative, then the execution control unit 22 initializes an XPath navigator 23. However, in the step E604 following the step E602, the values of the variables d state of the browser 10 in use, designated by reference browser, are stored. This step is followed by step E605 in which the browser initialized by the execution control unit 22 will be synchronized with the reference browser. This synchronization step is carried out in particular in 4 steps.

15 Tout d'abord, la synchronisation débute à l'étape E650 au cours de laquelle le nouveau navigateur XPath 23 voit son historique remis à zéro. Cet historique peut contenir notamment des informations sur un ou plusieurs noeuds traités, des statistiques sur les types de noeud déjà analysés. Ensuite l'algorithme se poursuit à l'étape E651 consistant à 20 récupérer l'analyseur XML 3 associé au nouveau navigateur XPath 23. Si ce dernier n'a pas été préalablement créé, alors on procède à la création d'un nouveau navigateur. L'étape E651 est suivie de l'étape E652 consistant à recopier les valeurs des variables d'état de l'analyseur XML de référence dans les variables 25 d'état de l'analyseur XML du nouveau navigateur XPath 23. L'étape suivante (étape E653) consiste à affecter les données de l'analyseur XML de référence à la mémoire tampon de l'analyseur XML associé au nouveau navigateur XPath. Cette mémoire stocke les données provenant du flux XML 4.First of all, the synchronization starts at step E650 during which the new XPath browser 23 has its history reset. This history can contain information on one or more processed nodes, statistics on the node types already analyzed. Then the algorithm proceeds to step E651 of retrieving the XML parser 3 associated with the new XPath browser 23. If the latter was not previously created, then a new browser is created. Step E651 is followed by step E652 of copying the values of the state variables of the reference XML parser into the state variables of the XML parser of the new XPath browser 23. The next step (step E653) is to assign the data of the reference XML parser to the buffer of the XML parser associated with the new XPath browser. This memory stores the data from the XML stream 4.

30 L'algorithme se poursuit à l'étape E606. En effet, après avoir sélectionné le navigateur XPath 23 à utiliser, l'unité de contrôle d'exécution 22 réalise l'évaluation des étapes de localisation de l'expression relative à un 2908539 22 chemin de localisation courante. Cette étape est décrite ci-après en référence à la Figure 7. L'étape E607 suit l'étape E606 au cours de laquelle l'unité de contrôle d'exécution 22 restaure l'état du navigateur XPath 23 mémorisé lors de 5 l'étape E604 lorsque l'évaluation des étapes de localisation conduit à l'envoi d'un résultat ou se termine sans résultat. L'expression relative à un chemin de localisation restaurée lors de l'étape E607 utilise le résultat éventuel déterminé lors de l'étape E606 et le processeur continue son évaluation. Pour ce faire, celui-ci teste lors de l'étape 10 E608 si l'expression relative à un chemin de localisation a été totalement évaluée ou non. Dans le cas négatif, l'étape E608 est suivie de l'étape E606 précédemment décrite dans laquelle l'étape de localisation suivante est évaluée.The algorithm continues in step E606. Indeed, after selecting the XPath browser 23 to use, the execution control unit 22 performs the evaluation of the location steps of the expression relating to a current location path. This step is described hereinafter with reference to FIG. 7. Step E607 follows step E606 in which execution control unit 22 restores the state of the XPath navigator 23 stored in memory. step E604 when the evaluation of the localization steps leads to the sending of a result or ends without result. The expression relating to a location path restored in step E607 uses the eventual result determined in step E606 and the processor continues its evaluation. To do this, it tests in step E608 if the expression relating to a location path has been fully evaluated or not. In the negative case, the step E608 is followed by the previously described step E606 in which the next location step is evaluated.

15 Si l'expression relative à un chemin de localisation a été entièrement évaluée, alors il est mis fin à l'algorithme d'évaluation. II est maintenant décrit l'évaluation des étapes de localisation en référence à la Figure 7. L'évaluation des étapes de localisation composant une expression 20 relative à un chemin de localisation consiste à traiter consécutivement chaque étape de localisation qui la compose. L'algorithme débute à l'étape E710 consistant à sélectionner la première étape de localisation. Ensuite, lors de l'étape E711, on détermine si l'étape de localisation 25 courante nécessite un test approfondi. Si tel est le cas, alors l'algorithme se poursuit à l'étape E712 consistant à activer la sauvegarde de l'historique du navigateur XPath 23 pour cette étape de localisation et les suivantes. La désactivation de la sauvegarde (réalisée à l'étape E713) interviendra lorsque l'unité de contrôle d'exécution 22 30 sera de nouveau positionnée sur l'étape de localisation parente de celle qui a déclenché l'activation de la sauvegarde.If the expression relating to a location path has been fully evaluated, then the evaluation algorithm is terminated. The evaluation of the locating steps is now described with reference to Figure 7. The evaluation of the locating steps composing a locator path expression consists in consecutively processing each locating step that composes it. The algorithm starts at step E710 of selecting the first location step. Then, in step E711, it is determined whether the current location step requires a thorough test. If so, then the algorithm proceeds to step E712 of enabling the XPath browser history backup 23 for this and subsequent locating step. The deactivation of the backup (performed in step E713) will occur when the execution control unit 2230 is again positioned on the parent location step of the one that triggered the activation of the backup.

2908539 23 Les étapes E712 et E713 sont suivies de l'étape E714 consistant à chercher un noeud candidat à partir des données XML. Un algorithme conforme à l'invention détaillant cette étape est illustré en Figure 8 et est décrit ci-après.Steps E712 and E713 are followed by step E714 of searching for a candidate node from the XML data. An algorithm according to the invention detailing this step is illustrated in FIG. 8 and is described below.

5 Si le test de l'étape E714 est négatif, c'est-à-dire si aucun noeud candidat n'a été trouvé, alors l'algorithme se poursuit à l'étape E720. L'étape E720 détermine s'il existe une étape de localisation précédente à l'étape de localisation courante. Si tel est le cas, alors l'étape de localisation précédente devient 10 l'étape de localisation courante et l'algorithme se poursuit à l'étape E711 précédemment décrite. Dans le cas contraire, l'expression relative à un chemin de localisation a été entièrement évaluée et il est mis fin à l'algorithme. Lorsqu'un noeud candidat a été trouvé à l'étape E714, l'algorithme se 15 poursuit à l'étape E715 au cours de laquelle on teste le noeud candidat en lui appliquant le test d'éligibilité afin de déterminer s'il est une solution potentielle de l'étape de localisation courante. Dans la négative, l'étape E715 est suivie de l'étape E714 précédemment décrite au cours de laquelle: on cherche un nouveau candidat, 20 le candidat courant n'étant pas éligible pour la résolution de l'étape de localisation courante. Dans le cas positif, l'algorithme se poursuit à l'étape E716 consistant à la vérification d'éventuels prédicats associés à l'étape de localisation courante.If the test of step E714 is negative, i.e. if no candidate node has been found, then the algorithm proceeds to step E720. Step E720 determines whether there is a previous location step at the current location step. If this is the case, then the preceding location step becomes the current location step and the algorithm proceeds to the previously described step E711. In the opposite case, the expression relating to a location path has been fully evaluated and the algorithm is terminated. When a candidate node has been found in step E714, the algorithm proceeds to step E715 in which the candidate node is tested by applying the eligibility test to determine if it is a candidate. potential solution of the current location step. If not, step E715 is followed by step E714 previously described in which: a new candidate is sought, the current candidate not being eligible for resolution of the current location step. In the positive case, the algorithm continues in step E716 consisting in checking any predicates associated with the current location step.

25 Les prédicats sont représentés par des expressions, notamment des expressions XPath composées de sous-expressions. L'évaluation des prédicats est réalisée conformément à l'évaluation d'une expression telle qu'illustrée en Figure 6 à la différence que les noeuds résultats d'une expression représentant un prédicat ne sont pas transmis à l'application mais traduits en un résultat 30 booléen selon le test à effectuer dans le prédicat. II peut s'agir d'un test de valeur, de position, de nom ou de simple existence.Predicates are represented by expressions, including XPath expressions composed of subexpressions. The evaluation of the predicates is done according to the evaluation of an expression as illustrated in Figure 6 except that the result nodes of an expression representing a predicate are not transmitted to the application but translated into a result 30 Boolean according to the test to be performed in the predicate. It can be a test of value, position, name or mere existence.

2908539 24 Si le test est négatif, l'étape E716 est suivie de l'étape E714 précédemment décrite. Si, au contraire le test est positif, l'algorithme se poursuit à l'étape E717 consistant à déterminer si l'étape de localisation traitée est la dernière 5 étape de l'expression relative à un chemin de localisation. Dans la négative, l'étape E717 est suivie de l'étape E719 consistant à déterminer l'étape de localisation suivante. Cette étape est ensuite suivie de l'étape E711 précédemment décrite. Si l'étape de localisation est la dernière de l'expression relative à un 10 chemin de localisation alors l'algorithme se poursuit à l'étape E718. Durant cette étape, on procède à l'émission du résultat de l'évaluation de l'expression relative à un chemin de localisation. Le principe général de cet algorithme est de considérer l'étape de localisation suivante (étape E719) lorsqu'un résultat pour une étape de 15 localisation intermédiaire a été trouvé (test positif lors de l'étape E716 suivi d'un test négatif lors de l'étape E717). II est maintenant décrit la recherche d'un noeud candidat correspondant à l'étape E714 de la Figure 7. Un algorithme conforme à l'invention est illustré en Figure 8.If the test is negative, step E716 is followed by step E714 previously described. If, on the other hand, the test is positive, the algorithm continues in step E717 of determining whether the processed localization step is the last step of the expression relating to a location path. If not, step E717 is followed by step E719 of determining the next location step. This step is then followed by step E711 previously described. If the locating step is the last of the location path expression then the algorithm proceeds to step E718. During this step, the result of evaluating the expression relating to a location path is issued. The general principle of this algorithm is to consider the following location step (step E719) when a result for an intermediate localization step has been found (positive test in step E716 followed by a negative test when step E717). It is now described the search for a candidate node corresponding to step E714 of Figure 7. An algorithm according to the invention is illustrated in Figure 8.

20 L'unité de contrôle d'exécution 22 obtient la valeur de l'entité exprimant une relation de filiation de l'étape de localisation courante à l'étape E800. Cette étape est suivie de l'étape E801 au cours de laquelle on vérifie si la relation de filiation contient la relation self , i.e. si cette valeur est 25 noeud contexte ( self selon la spécification XPath) ou bien descendant ou noeud contexte ( descendant-or-self selon la spécification XPath). Si la valeur contient une relation de type noeud contexte alors l'algorithme se poursuit à l'étape E802 au cours de laquelle l'unité de contrôle d'exécution demande au navigateur XPath 23 de lui fournir le noeud courant. Le 30 résultat de l'étape de localisation précédente est donc le noeud contexte de l'étape de localisation courante.The execution control unit 22 obtains the value of the entity expressing a filiation relationship from the current location step in step E800. This step is followed by step E801 in which it is checked whether the parent relationship contains the relation self, ie whether this value is a context node (self according to the XPath specification) or a descendant or context node (descendant-or -self according to the XPath specification). If the value contains a node-context relationship then the algorithm proceeds to step E802 in which the execution control unit requests the XPath browser 23 to provide it with the current node. The result of the preceding location step is therefore the context node of the current location step.

2908539 25 L'étape E803 suit l'étape E802 au cours de laquelle ce noeud courant est émis comme un noeud candidat. Si lors de l'étape E801, les valeurs sont différentes, alors l'algorithme se poursuit à l'étape E804 au cours de laquelle l'unité de contrôle d'exécution 5 22 compare la valeur de l'entité à la valeur attribut ( attribute selon la syntaxe XPath). Si la valeur est attribut alors l'algorithme se poursuit à l'étape E805 au cours de laquelle l'unité de contrôle d'exécution 22 demande au navigateur XPath 23 de lui fournir le noeud de type attribut courant.Step E803 follows step E802 during which this current node is transmitted as a candidate node. If in step E801, the values are different, then the algorithm proceeds to step E804 in which the execution control unit 22 compares the value of the entity with the attribute value ( attribute according to XPath syntax). If the value is attribute then the algorithm proceeds to step E805 in which the execution control unit 22 requests the XPath browser 23 to provide it with the current attribute type node.

10 Cette étape est suivie de l'étape E806 au cours de laquelle on détermine si ce noeud a fait l'objet d'une recherche par l'analyseur XML 3. Si tel est le cas, ce noeud est mémorisé dans la mémoire du navigateur XPath 23. L'étape suivante (étape E803) consiste à émettre ce noeud comme noeud candidat. Le stockage des noeuds et leur émission vers l'application sont 15 décrits plus bas en référence aux figures 12 et 13. Si, lors de l'étape E805, aucun attribut n'est trouvé, la sauvegarde réalisée à l'étape E806 n'est pas réalisée. En outre, lors de l'étape E803, l'événement émis est l'événement fin. De retour à l'étape E804, si la valeur de l'entité est différente de la 20 valeur attribut , alors l'algorithme se poursuit à l'étape E807 au cours de laquelle l'unité de contrôle d'exécution 22 compare la valeur de l'entité à la valeur enfant ( child selon la syntaxe XPath). Si la valeur est enfant alors l'algorithme se poursuit à l'étape E808 au cours de laquelle l'unité de contrôle d'exécution 22 indique au 25 navigateur XPath 23 la profondeur à laquelle celui-ci doit chercher un noeud candidat. Le calcul de la profondeur est la valeur profondeur du noeud contexte incrémenté de la valeur 1 si l'étape de localisation n'a pas été identifiée comme devant subir un mode approfondi. Dans le cas contraire, la profondeur cible 30 prend la valeur infinie.This step is followed by the step E806 during which it is determined whether this node has been searched by the XML parser 3. If this is the case, this node is stored in the browser memory. XPath 23. The next step (step E803) is to transmit this node as a candidate node. The storage of the nodes and their transmission to the application are described below with reference to FIGS. 12 and 13. If, during step E805, no attribute is found, the backup performed in step E806 does not occur. is not realized. In addition, in step E803, the transmitted event is the end event. Returning to step E804, if the value of the entity is different from the attribute value, then the algorithm proceeds to step E807 in which the execution control unit 22 compares the value of the entity to the child value (child according to the XPath syntax). If the value is child then the algorithm proceeds to step E808 in which the execution control unit 22 indicates to the XPath browser 23 the depth at which the XPath navigator must look for a candidate node. The calculation of the depth is the depth value of the incremented context node of the value 1 if the location step has not been identified as having to undergo a deep mode. In the opposite case, the target depth 30 takes the infinite value.

2908539 26 L'étape E808 est suivie de l'étape E810 au cours de laquelle le navigateur XPath 23 recherche le candidat en faisant appel à l'analyseur XML 3. Pour ce faire, l'analyseur XML 3 parcourt la partie du flux XML 4 5 correspondant au sous-arbre se trouvant sous le noeud contexte jusqu'à ce qu'un noeud fils du noeud contexte de type texte, commentaire ou élément soit trouvé. Il apparaît ainsi, qu'à l'inverse des solutions mentionnées dans l'état de la technique, le navigateur XPath 23 ne fournit au contrôleur d'exécution 22 que les noeuds pertinents.Step E808 is followed by step E810 during which the XPath browser 23 searches for the candidate by using the XML parser 3. To do this, the XML parser 3 traverses the part of the XML stream 4 5 corresponding to the subtree under the context node until a child node of the text, comment or element context node is found. It thus appears that, unlike the solutions mentioned in the state of the art, the XPath browser 23 only provides the execution controller 22 with the relevant nodes.

10 Ce noeud est ensuite sauvegardé en mémoire du navigateur XPath 23 lors de l'étape suivante (étape E811). Ensuite, l'étape E811 est suivie de l'étape E803 au cours de laquelle on émet le noeud trouvé comme noeud candidat. Toutefois, si aucun noeud n'a été trouvé entre le début du noeud 15 contexte et sa fin, identifié par une balise XML fermante alors, lors de l'étape E803, l'événement fin est émis. De retour à l'étape E807, si la valeur de l'entité est différente de la valeur enfant , alors l'algorithme se poursuit à l'étape E812 au cours de laquelle l'unité de contrôle d'exécution 22 vérifie si l'entité contient une relation 20 de type descendant ( descendant ou descendant-or-self selon la syntaxe XPath). Si la valeur est descendant ou descendant ou noeud contexte alors l'algorithme se poursuit à l'étape E813 au cours de laquelle l'unité de contrôle d'exécution 22 indique au navigateur XPath 23 que la recherche d'un 25 fils ou descendant est à réaliser sans limite de profondeur à partir de la profondeur courante. L'étape E813 est suivie de l'étape E810 précédemment décrite. Si, lors de l'étape E812, la valeur de l'entité ne contient pas de valeur de type descendant alors l'algorithme se poursuit à l'étape E814 au cours 30 de laquelle on émet une information indiquant qu'aucun candidat n'a été trouvé. Dans le cas particulier dans lequel la valeur de l'entité est la valeur descendant ou noeud contexte ( descendant-or-self selon la syntaxe 2908539 27 XPath), l'unité de contrôle d'exécution 22 réalise une recherche en fonction de la valeur noeud contexte tel que décrit à l'étape E801 si cette dernière n'a pas déjà été faite pour l'étape de localisation courante. Toutefois, si aucun candidat n'a été trouvé, alors la recherche est réalisée en fonction de la valeur 5 descendant tel que décrit à partir de l'étape E812. Il est maintenant décrit le test du candidat mentionné à l'étape E715 de la Figure 7. Si l'étape E714 n'a pas émis un évènement de fin ou d'erreur, alors l'étape de test E715 est activée. Si l'étape de localisation courante a été identifiée lors de la 10 compilation (décrite à l'étape E506 de la Figure 5) comme nécessitant un test approfondi , l'étape E715 de la Figure 7 est réalisée tel que décrit ci-après en référence à la Figure 10. Si l'étape de localisation courante a été identifiée comme étant une étape de localisation virtuelle ( Step virtuel selon la syntaxe XPath) (décrite à 15 l'étape E502 de la Figure 5) alors le test de l'étape E715 retourne la valeur vrai. Si l'étape de localisation courante a été identifiée comme nécessitant un mode de test normal , alors l'étape E715 est réalisée tel que décrit ci-après en référence à la Figure 9. Cet algorithme de test selon le mode normal est maintenant décrit en 20 référence à la Figure 9. L'algorithme débute à l'étape E901 au cours de laquelle l'unité de contrôle d'exécution 22 obtient la valeur du test d'éligibilité ( Node Test selon la syntaxe XPath) associée à la représentation de l'étape de localisation courante. Cette entité peut prendre la valeur test du nom ( NameTest 25 selon la syntaxe XPath), ou test du type ( NodeType selon la syntaxe XPath) pouvant être : noeud ( node() )) selon la syntaxe XPath), texte ( textO selon la syntaxe XPath), commentaire ( comment() )) selon la syntaxe XPath) ou instruction de traitement ( processing-instruction() )) selon la syntaxe XPath) selon la spécification XPath. Le test sur le nom peut 30 porter à la fois sur la valeur de l'espace de nommage du noeud (représentée par un préfixe) et sur son nom local , nom unique à l'intérieur de cet espace de nommage.This node is then saved in memory of the XPath browser 23 in the next step (step E811). Then, step E811 is followed by step E803 during which the node is sent as candidate node. However, if no node has been found between the beginning of the context node and its end, identified by a closing XML tag then, in the step E803, the end event is issued. Returning to step E807, if the value of the entity is different from the child value, then the algorithm proceeds to step E812 in which the execution control unit 22 checks whether the entity contains a descending-type (descending or descending-or-self) relationship according to the XPath syntax. If the value is descending or descending or context node then the algorithm proceeds to step E813 in which the execution control unit 22 indicates to the XPath browser 23 that the search for a son or descendant is to achieve without depth limit from the current depth. Step E813 is followed by step E810 previously described. If, in step E812, the value of the entity does not contain a descending type value then the algorithm proceeds to step E814 during which information is emitted indicating that no candidate Was found. In the particular case in which the value of the entity is the descending value or context node (descendant-or-self according to the syntax 2908539 27 XPath), the execution control unit 22 performs a search according to the value context node as described in step E801 if the latter has not already been made for the current location step. However, if no candidate has been found then the search is performed according to the descending value as described from step E812. The test of the candidate mentioned in step E715 of FIG. 7 is now described. If step E714 did not emit an end or error event, then the test step E715 is activated. If the current location step has been identified during the compilation (described in step E506 of FIG. 5) as requiring an in-depth test, step E715 of FIG. 7 is performed as described below in FIG. 10. If the current location step has been identified as a virtual location step (virtual step according to the XPath syntax) (described in step E502 of FIG. 5) then the test of the step E715 returns the true value. If the current location step has been identified as requiring a normal test mode, then step E715 is performed as described below with reference to FIG. 9. This normal mode test algorithm is now described in FIG. FIG. 9. The algorithm starts at step E901 in which the execution control unit 22 obtains the value of the eligibility test (XPath syntax-based Node Test) associated with the representation of the current location step. This entity can take the test value of the name (NameTest 25 according to the XPath syntax), or test of the type (NodeType according to the XPath syntax) that can be: node () () according to the XPath syntax), text (textO according to the XPath syntax), comment (comment ())) according to the XPath syntax) or processing-instruction ())) according to the XPath syntax according to the XPath specification. The name test may relate to both the value of the node's namespace (represented by a prefix) and its local, unique name within that namespace.

2908539 28 L'étape E901 est suivie de l'étape E902 au cours de laquelle on compare la valeur du test d'éligibilité du noeud obtenue à la valeur test du nom .Si le test d'éligibilité a la valeur test du nom alors l'algorithme se 5 poursuit à l'étape E903 au cours de laquelle l'unité de contrôle d'exécution 22 résout le préfixe, autrement dit la valeur de l'espace de nommage, associé au noeud candidat. Celle information est mémorisée dans la mémoire du navigateur XPath 23. L'étape E903 est suivie de l'étape E904 consistant à comparer la 10 valeur du préfixe ainsi obtenue avec la valeur de l'espace de nommage correspondant au préfixe contenu dans le test du nom . Si ces valeurs sont équivalentes alors l'algorithme se poursuit à l'étape E905 dans laquelle l'unité de contrôle d'exécution 22 obtient le nom local du noeud candidat, c'est-à-dire par exemple, le nom unique à l'intérieur de 15 l'espace de nommage. L'étape E905 est suivie de l'étape E906 au cours de laquelle le nom local du noeud candidat est comparé au nom local porté précisé dans le test du nom . Si les noms sont équivalents alors le noeud candidat satisfait le test 20 associé à l'étape de localisation courante et peut être considéré comme une solution potentielle de l'étape de localisation. Ensuite il sera procédé à la vérification des prédicats, notamment au cours de l'étape E716 de la Figure 7. Dans le cas contraire, le noeud candidat ne satisfait pas le test associé à l'étape de localisation courante et il est considéré comme n'étant pas 25 une solution de l'étape de localisation. De retour à l'étape E902 dans le cas où le test d'éligibilité n'a pas la valeur test du nom alors l'algorithme se poursuit à l'étape E907 consistant à comparer la valeur du test d'éligibilité avec la valeur type du noeud . Si le test d'éligibilité n'a pas la valeur type du noeud alors il est 30 mis fin à l'algorithme en retournant un message d'erreur. Sinon, si le test d'éligibilité a la valeur type du noeud alors l'algorithme se poursuit à l'étape E908 au cours de laquelle l'unité de contrôle 2908539 29 d'exécution 22 obtient le type du noeud candidat. Cette information est mémorisée dans la mémoire du navigateur XPath 23. L'algorithme se poursuit à l'étape E909 au cours de laquelle on compare le type du candidat avec la valeur du type contenu dans la valeur 5 type du noeud . Si les valeurs sont similaires alors le noeud candidat est une solution potentielle de l'étape de localisation. Dans le cas contraire, le noeud candidat n'est pas une solution. II est maintenant décrit, en référence à la Figure 10, un algorithme 10 réalisant le test approfondi conforme à l'invention. La décision de mise en oeuvre ultérieure du test approfondi est prise lors de la compilation d'une étape de localisation conditionnellement à la valeur de l'entité exprimant une relation de filiation tel que décrit en Figure 5. Ce mode de test peut-être activé, notamment lors du test d'un 15 candidat tel que décrit en référence à l'étape E715 de la Figure 7. Tel que précédemment décrit en référence à la Figure 7, si l'étape de localisation courante nécessite un test approfondi (étape E711), l'unité de contrôle d'exécution 22 obtient le profil du noeud attendu déterminé lors de l'analyse de l'étape de localisation afin de le comparer au noeud candidat 20 déterminé lors de l'étape E714. L'algorithme du test approfondi débute à l'étape E1000 par l'obtention du noeud candidat. Cette étape est suivie de l'étape E1001 consistant à obtenir le noeud attendu. Ce dernier est disponible dans la structure de représentation de 25 l'étape de localisation courante. L'étape suivante (étape E1002) consiste pour l'unité de contrôle d'exécution 22, à comparer le type du noeud candidat avec le type du noeud attendu. Si les types des noeuds sont comparables, alors l'algorithme se 30 poursuit à l'étape E1003 au cours de laquelle l'unité de contrôle de l'exécution applique le test du nom de l'étape de localisation courante.Step E901 is followed by step E902 in which the value of the eligibility test of the obtained node is compared with the test value of the name. If the test of eligibility has the test value of the name then the The algorithm proceeds to step E903 in which the execution control unit 22 resolves the prefix, ie the value of the namespace, associated with the candidate node. This information is stored in the memory of the XPath navigator 23. The step E903 is followed by the step E904 of comparing the value of the prefix thus obtained with the value of the namespace corresponding to the prefix contained in the test. name. If these values are equivalent then the algorithm proceeds to step E905 in which the execution control unit 22 obtains the local name of the candidate node, i.e., for example, the unique name of the candidate node. inside the namespace. Step E905 is followed by step E906 in which the local name of the candidate node is compared to the local name port specified in the name test. If the names are equivalent then the candidate node satisfies the test associated with the current location step and can be considered as a potential solution of the location step. Then the predicate checks will be carried out, in particular during step E716 of FIG. 7. In the opposite case, the candidate node does not satisfy the test associated with the current location step and it is considered as not being a solution of the locating step. Returning to step E902 in the case where the eligibility test does not have the test value of the name then the algorithm continues in step E907 of comparing the value of the eligibility test with the standard value of the node. If the eligibility test does not have the node's type value then the algorithm is terminated by returning an error message. Otherwise, if the eligibility test has the node's standard value then the algorithm proceeds to step E908 in which the execution control unit 22 obtains the type of the candidate node. This information is stored in the memory of the XPath navigator 23. The algorithm continues in step E909 in which the type of the candidate is compared with the value of the type contained in the standard value of the node. If the values are similar then the candidate node is a potential solution of the location step. Otherwise, the candidate node is not a solution. It is now described, with reference to FIG. 10, an algorithm 10 carrying out the in-depth test according to the invention. The decision to implement the further test at a later stage is taken when compiling a location step conditionally on the value of the entity expressing a parentage relationship as described in Figure 5. This test mode can be activated. , especially during the test of a candidate as described with reference to step E715 of FIG. 7. As previously described with reference to FIG. 7, if the current location step requires a thorough test (step E711 ), the execution control unit 22 obtains the profile of the expected node determined during the analysis of the location step in order to compare it with the candidate node determined during the step E714. The algorithm of the in-depth test starts at step E1000 by obtaining the candidate node. This step is followed by the step E1001 of obtaining the expected node. The latter is available in the representation structure of the current location step. The next step (step E1002) is for the execution control unit 22, to compare the type of the candidate node with the type of the expected node. If the types of the nodes are comparable, then the algorithm proceeds to step E1003 in which the execution control unit applies the test of the name of the current location step.

2908539 30 Si le test d'éligibilité de l'étape de localisation a la valeur type de noeud et non la valeur test du nom , cette étape n'est pas exécutée par l'unité de contrôle d'exécution. Sinon, ce test consiste en l'enchaînement des étapes E903 à E906 en référence à la Figure 9.If the eligibility test of the locate step has the node type value and not the test value of the name, this step is not executed by the execution control unit. Otherwise, this test consists of the sequence of steps E903 to E906 with reference to FIG. 9.

5 Si le test réalisé à l'étape E1003 est vrai, l'algorithme se poursuit à l'étape E1003a durant laquelle l'unité de contrôle d'exécution obtient la profondeur. Ensuite l'étape E1003a est suivie de l'étape E1004 au cours de laquelle on compare la profondeur obtenue et la profondeur attendue pour les résultats de l'étape de localisation courante.If the test performed in step E1003 is true, the algorithm continues at step E1003a during which the execution control unit obtains the depth. Then step E1003a is followed by step E1004 during which the depth obtained and the depth expected for the results of the current location step are compared.

10 Si la profondeur obtenue est différente de la profondeur attendue alors il est mis fin à l'algorithme et le test d'éligibilité retourne la valeur faux. La profondeur attendue est la profondeur entre le noeud contexte et un noeud qui serait solution de l'étape courante du chemin. Cet incrément est calculé lors de l'étape E504 ou de l'étape E509 de la Figure 5.If the depth obtained is different from the expected depth then the algorithm is terminated and the eligibility test returns the false value. The expected depth is the depth between the context node and a node that would be the solution of the current step of the path. This increment is calculated during step E504 or step E509 of FIG. 5.

15 Si, au contraire, la profondeur obtenue est similaire à la profondeur attendue alors l'étape E1004 est suivie de l'étape E1005 consistant à obtenir l'incrément de profondeur attendu entre le noeud résultat et son noeud contexte. L'étape suivante (étape E1006) consiste à obtenir le noeud contexte du noeud candidat qui a été mémorisé dans l'historique du navigateur XPath 23.If, on the contrary, the depth obtained is similar to the expected depth then step E1004 is followed by step E1005 of obtaining the expected depth increment between the result node and its context node. The next step (step E1006) is to obtain the context node of the candidate node that has been stored in the history of the XPath browser 23.

20 Si le noeud contexte n'existe pas, alors il n'y a aucune contrainte à vérifier sur son historique et le noeud candidat est déclaré solution potentielle mettant ainsi fin à l'algorithme. Dans le cas contraire, c'est-à-dire si un noeud parent existe dans l'historique, alors l'algorithme se poursuit à l'étape E1007 au cours de laquelle 25 sa profondeur est utilisée pour calculer l'incrément de profondeur entre le noeud parent et le noeud candidat. L'étape suivante (étape E1008) consiste à comparer cet incrément à l'incrément attendu. Si l'incrément est différent de l'incrément attendu, alors il est mis fin à 30 l'algorithme en retournant la valeur faux. Si, au contraire, l'incrément est similaire à l'incrément attendu, alors le noeud contexte devient le noeud à tester de façon approfondie.If the context node does not exist, then there is no constraint to check on its history and the candidate node is declared potential solution thus ending the algorithm. In the opposite case, that is, if a parent node exists in the history, then the algorithm proceeds to step E1007 in which its depth is used to calculate the depth increment between the parent node and the candidate node. The next step (step E1008) is to compare this increment to the expected increment. If the increment is different from the expected increment, then the algorithm is terminated by returning the false value. If, on the other hand, the increment is similar to the expected increment, then the context node becomes the node to test thoroughly.

2908539 31 Pour ce faire, l'algorithme se poursuit à l'étape E1009 au cours de laquelle l'unité de contrôle d'exécution 22 obtient le profil du noeud attendu pour l'étape de localisation précédent l'étape de localisation en cours de traitement. S'il n'y a plus de noeud attendu, alors il est mis fin à l'algorithme de 5 test approfondi en déclarant le noeud candidat comme solution potentielle. Dans le cas contraire, c'est-à-dire si un noeud de référence existe, alors l'algorithme se poursuit à l'étape E1002 précédemment décrite. Les étapes E1002 à E1008 sont réitérées jusqu'à atteindre soit la fin de l'historique (test négatif réalisé lors de l'étape E1006), soit l'initialisation du test approfondi 10 de l'étape de localisation (étape E1009). Il est maintenant présenté un exemple d'évaluation illustré en Figure 11 selon le mode test approfondi . Deux expressions XPath relative à un chemin de localisation équivalentes (1111), mais écrites différemment, comprennent quatre étapes de 15 localisation : S0, SI et S2, et une étape de localisation virtuelle SV1 (1113). A chaque expression devant subir un test approfondi (SI et S2), les profils des noeuds attendus (1112), en termes de type, préfixe, nom, et incrément de profondeur, sont illustrés à titre d'exemple. En figure 11, il est également illustré un document contenant des 20 données XML (1114) sur lesquelles sont évaluées les expressions XPath. Il est illustré les différents noeuds contextes (1115) qui sont rencontrés au cours de l'évaluation des expressions. Ces noeuds contextes correspondent aux solutions de l'étape de localisation virtuelle SV1. Selon la solution décrite dans les paragraphes précédents, 25 lorsqu'une solution est trouvée pour l'étape de localisation virtuelle SV1, l'évaluation se poursuit par l'évaluation de l'étape de localisation S1, notamment par l'exécution des étapes E714 à E716 de la Figure 7, puis par l'évaluation de l'étape de localisation S2 lorsqu'un élément b avec un incrément de profondeur égal à 1 par rapport au noeud contexte est trouvé.To do this, the algorithm continues in step E1009 during which the execution control unit 22 obtains the expected node profile for the location step preceding the current location step of treatment. If there is no longer an expected node, then the deep test algorithm is terminated by declaring the candidate node as a potential solution. In the opposite case, that is to say if a reference node exists, then the algorithm continues in the previously described step E1002. The steps E1002 to E1008 are repeated until reaching the end of the history (negative test performed in step E1006), or the initialization of the deep test 10 of the locating step (step E1009). It is now presented an example of evaluation illustrated in Figure 11 according to the in-depth test mode. Two XPath expressions relating to an equivalent location path (1111), but written differently, include four location steps: S0, S1 and S2, and a virtual location step SV1 (1113). For each expression to be thoroughly tested (SI and S2), the expected node profiles (1112), in terms of type, prefix, name, and depth increment, are illustrated by way of example. In Fig. 11, there is also illustrated a document containing XML data (1114) on which XPath expressions are evaluated. It is illustrated the different contexts nodes (1115) that are encountered during the evaluation of expressions. These context nodes correspond to the solutions of the virtual location step SV1. According to the solution described in the preceding paragraphs, when a solution is found for the virtual location step SV1, the evaluation proceeds with the evaluation of the location step S1, in particular by the execution of the steps E714. at E716 of Figure 7, then by evaluating the locating step S2 when an element b with a depth increment equal to 1 relative to the context node is found.

30 Les solutions de l'expression (1116) seront alors les éléments, ayant n'importe quel nom, situés à un niveau de profondeur +1 par rapport aux solutions de l'étape de localisation S1.The solutions of the expression (1116) will then be the elements, having any name, located at a depth level +1 with respect to the solutions of the locating step S1.

2908539 32 Il est maintenant décrit une variante de réalisation de la mise en oeuvre des navigateurs multiples ayant pour objectif de limiter le nombre d'accès au flux XML, basée sur une synchronisation des navigateurs XPath. Les navigateurs XPath 23 du processeur XPath 2 peuvent posséder 5 une référence sur une zone mémoire du processeur XPath. Dans cette zone mémoire, le navigateur XPath 23 courant écrit les données XML extraites par l'analyseur XML 3 et lues depuis le flux 4 sous la forme d'une suite d'évènements. Cette mémoire peut être mise en oeuvre sous la forme d'une liste 10 ordonnée gérée de telle manière que le premier évènement mémorisé est le premier événement consommé. Seul le navigateur XPath principal 23 est habilité à retirer les éléments de cette liste et à les traiter. Cette mise en oeuvre nécessite, toutefois, une étape d'initialisation 15 dans laquelle, lors de la sauvegarde de l'état des variables du navigateur de référence (réalisée lors de l'étape E604 de la figure 6), le navigateur garde une référence sur le dernier élément de la liste. Cette référence est le point de départ pour les navigations qui sont créées consécutives à l'étape de restauration E607 de la Figure 6.An embodiment variant of the implementation of multiple browsers with the purpose of limiting the number of accesses to the XML stream, based on synchronization of XPath browsers, is now described. The XPath browsers 23 of the XPath processor 2 may have a reference to a memory area of the XPath processor. In this memory zone, the current XPath browser 23 writes the XML data extracted by the XML parser 3 and read from the stream 4 as a series of events. This memory can be implemented in the form of an ordered list managed such that the first stored event is the first consumed event. Only the main XPath browser 23 is entitled to remove the items from this list and process them. This implementation requires, however, an initialization step 15 in which, during the backup of the state of the variables of the reference browser (carried out in step E604 of FIG. 6), the browser keeps a reference on the last item in the list. This reference is the starting point for navigations that are created following the E607 restore step in Figure 6.

20 Lorsque le navigateur principal est restauré à l'étape E607, celui-ci reprend la navigation à partir des différents éléments de la liste d'évènements. Lorsque le dernier événement de la liste est atteint, le navigateur reprend la navigation en utilisant son analyseur XML 3. Ainsi, selon cette mise en oeuvre, un seul analyseur XML 3 est utilisé.When the main browser is restored in step E607, it resumes navigation from the various elements of the event list. When the last event of the list is reached, the browser resumes navigation using its XML parser 3. Thus, according to this implementation, a single XML parser 3 is used.

25 En outre, ce mode de réalisation particulier présente l'avantage de diminuer la consommation de bande passante dans les cas où le flux XML 4 provient d'une connexion réseau. Selon l'invention, la décomposition de l'évaluation d'une expression XPath en plusieurs tâches est facilitée. En effet, dans le mode de mise en 30 oeuvre basé sur une pluralité de navigateurs XPath (c'est-à-dire en fonctionnement multi-tâches), le navigateur XPath principal 23 effectue les évaluations selon les étapes de localisation de l'expression relative à un chemin 2908539 33 de localisation principale, tandis qu'en parallèle, les autres navigateurs XPath 23 effectuent les évaluations des sous-expressions correspondant par exemple aux prédicats ou aux expressions de localisation se trouvant dans des appels de fonction.In addition, this particular embodiment has the advantage of reducing the bandwidth consumption in cases where the XML stream 4 comes from a network connection. According to the invention, the decomposition of the evaluation of an XPath expression into several tasks is facilitated. Indeed, in the implementation mode based on a plurality of XPath browsers (i.e., in multi-tasking mode), the main XPath navigator 23 performs the evaluations according to the location steps of the expression. relative to a main location path, while in parallel, the other XPath browsers 23 perform the evaluations of the subexpressions corresponding for example to predicates or localization expressions found in function calls.

5 Dans le mode de réalisation particulier de mise en oeuvre des navigateurs multiples, le navigateur XPath principal 23 remplit la mémoire du processeur XPath 2 via son analyseur XML 3 associé. La synchronisation d'un nouveau navigateur intervient lorsque le navigateur principal détecte un noeud comme une solution potentielle (test 10 réalisé à l'étape E715 de la Figure 7). Une nouvelle tâche et le nouveau navigateur XPath 23 sont créés. Dans cette tâche, le nouveau navigateur obtient les évènements XML depuis la mémoire du processeur XPath 2 et évalue la sous-expression courante tandis que dans la tâche principale, le navigateur XPath 23 poursuit le parcours du flux 15 XML 4 via son analyseur XML 3 à la recherche de solutions potentielles. Les tâches attachées à la résolution des sous expressions se terminent lorsqu'une solution a été trouvée ou lorsque la séquence d'évènements représentant le sous arbre de recherche a été entièrement parcourue.In the particular implementation embodiment of the multiple browsers, the main XPath navigator 23 fills the memory of the XPath processor 2 via its associated XML parser 3. The synchronization of a new browser occurs when the main browser detects a node as a potential solution (test 10 performed in step E715 of Figure 7). A new task and the new XPath Browser 23 are created. In this task, the new browser obtains the XML events from the XPath processor memory 2 and evaluates the current subexpression while in the main task, the XPath browser 23 continues the flow of the XML stream 4 via its XML parser 3 to looking for potential solutions. Subexpression resolution tasks terminate when a solution has been found or when the sequence of events representing the subtree has been fully traversed.

20 Selon un autre mode de réalisation, ce mécanisme peut être étendu à une approche multi-tâches basée sur les étapes de localisation. Dans ce mode de réalisation, un navigateur XPath principal s'attache à résoudre la première étape de localisation et dès qu'une solution potentielle est trouvée, une ou deux tâches peuvent être créées afin respectivement de 25 résoudre un éventuel prédicat sur l'étape de localisation courante et de prendre en charge la résolution de l'étape de localisation suivante. Cette mise en oeuvre est particulièrement avantageuse dans le cas de documents XML indexés par profondeur. En effet, elle permet, d'une part, un accès rapide aux éléments se trouvant à une même profondeur et, d'autre part, 30 de ne pas considérer les sous arbres correspondant aux étapes de localisation consécutifs à une étape de localisation sans solution.According to another embodiment, this mechanism can be extended to a multi-task approach based on the location steps. In this embodiment, a main XPath browser attempts to resolve the first location step and as soon as a potential solution is found, one or two tasks can be created to respectively resolve a possible predicate on the step of Current location and support the resolution of the next location step. This implementation is particularly advantageous in the case of XML documents indexed by depth. Indeed, it allows, on the one hand, rapid access to the elements located at the same depth and, on the other hand, not to consider the subtrees corresponding to the location steps consecutive to a location step without solution. .

2908539 34 Il est maintenant décrit en référence à la Figure 12, l'émission des résultats. Afin de réaliser une évaluation des données intégralement à la volée, les résultats extraits du flux XML 4 par le processeur XPath 2 via son 5 navigateur XPath 23 sont retournés à l'application 1 au fur et à mesure de leur détection. Pour ce faire, le navigateur principal XPath 23 du processeur XPath comprend deux champs appelés émission et stockage indiquant respectivement le statut en termes d'émission d'évènements vers l'application, 10 notamment lorsqu'un résultat a été trouvé lors de l'étape E718 de la Figure 7 et le statut en termes de stockage d'évènements représentant un résultat compris dans le résultat en cours d'émission. En effet, le problème principal réside dans la gestion des résultats emboîtés. Par exemple, si l'on considère le flux XML suivant : 15 <a><b><b><c/></b></b></a>, sur lequel on évalue l'expression //b, on obtiendra les deux résultats suivants : <b><b><c/></b></b> et <b><c/></b>. On constate sur cet exemple que le deuxième élément b et son contenu sont inclus dans le premier résultat et doivent donc être émis deux fois. L'algorithme décrit ci-dessous en référence aux Figures 12 et 13 permet de 20 traiter ce genre de situation sans recourir à un stockage multiple des résultats emboîtés (<b><c/></b> dans notre exemple). Le tableau ci-dessous résume les actions à réaliser en fonction du type d'évènement reçu ou extrait par le navigateur XPath 23 au cours du parcours du flux XML 4. Ce parcours est réalisé lors de l'étape E714 de 25 recherche de noeuds candidats. L'évènement début de résultat est émis par le contrôleur d'exécution 22 à l'étape E718. Le traitement de cet évènement est décrit en référence à la figure 12.2908539 34 It is now described with reference to Figure 12, the emission of results. In order to fully evaluate the data on the fly, the results extracted from the XML stream 4 by the XPath processor 2 via its XPath navigator 23 are returned to the application 1 as they are detected. In order to do this, the XPath main navigator 23 of the XPath processor comprises two fields called transmission and storage respectively indicating the status in terms of sending events to the application, especially when a result has been found during the step E718 of Figure 7 and the status in terms of event storage representing a result included in the result being issued. Indeed, the main problem lies in the management of nested results. For example, if we consider the following XML stream: <a> <b> <b> <c /> </ b> </ b> </a>, on which we evaluate the expression // b we will obtain the following two results: <b> <b> <c /> </ b> </ b> and <b> <c /> </ b>. It can be seen in this example that the second element b and its contents are included in the first result and must therefore be emitted twice. The algorithm described below with reference to FIGS. 12 and 13 makes it possible to deal with this kind of situation without resorting to multiple storage of the nested results (<b> <c /> </ b> in our example). The table below summarizes the actions to be performed according to the type of event received or retrieved by the XPath navigator 23 during the course of the XML stream 4. This path is performed during the step E714 of search for candidate nodes. . The result start event is issued by the execution controller 22 in step E718. The processing of this event is described with reference to FIG.

2908539 Evènement : Début de Evènement XML fin de résultat résultat Statuts Non-émission Activer Ne pas Impossible l'émission, considérer émettre le noeud courant Emission, non-Activer le Emettre Emettre, dépiler les stockage stockage, l'évènement queues stocker et d'évènements puis émettre le noeud désactiver l'émission courant Emission, Activer un Stocker Stocker l'évènement stockage nouveau l'évènement puis désactiver le stockage, dernier stockage stocker et émettre le noeud courant Tel qu'illustré dans le tableau ci-dessus, les évènements peuvent être de trois sortes. 1. Tout d'abord, l'événement début de résultat est un 5 évènement émis par l'unité de contrôle de l'exécution 22 lors de l'étape E718 de la Figure 7 afin de signaler au navigateur que le noeud courant correspond au début d'un nouveau résultat. 2. Ensuite, l'événement évènement XML décrit tous les évènements XML extraits par l'analyseur 3 lors du parcours du flux XML 4. 10 3. Enfin, l'événement fin de résultat est un évènement généré lors de la recherche de noeuds candidats de l'étape E810 de la Figure 8. Cet événement est généré lorsque le navigateur XPath 23 récupère depuis le flux XML 4 la balise fermante qui correspond à la fin de l'élément résultat. Dans l'exemple présenté précédemment décrit, des évènements de fin sont détectés 15 pour les éléments <lb>. La Figure 12 illustre le traitement du signal début de résultat par le navigateur XPath 23. Le traitement du signal début de résultat débute à l'étape E1200 par la réception de ce signal par le navigateur XPath 23. Ce signal provient de l'unité de contrôle d'exécution 22.2908539 Event: Start of Event XML end of result result Statuses Non-issue Activate Can not issue, consider issue the current node Emission, non-Enable Transmit Emit, unstack storage storage, event queues store and de events then emit the node disable the current broadcast Emission, Activate a Store Store the event storage new the event then disable the storage, last store store and emit the current node As shown in the table above, the events can be of three kinds. 1. First of all, the result start event is an event emitted by the execution control unit 22 during the step E718 of Figure 7 in order to signal to the browser that the current node corresponds to the start of a new result. 2. Then, the event event XML describes all the XML events extracted by the parser 3 during the flow of the XML stream 4. 10 3. Finally, the event end result is an event generated during the search for candidate nodes of step E810 of Figure 8. This event is generated when the XPath browser 23 retrieves from the XML stream 4 the closing tag that corresponds to the end of the result element. In the example described above, end events are detected for <lb> elements. FIG. 12 illustrates the processing of the start-of-result signal by the XPath navigator 23. The processing of the start-of-result signal starts at the step E1200 by the reception of this signal by the XPath navigator 23. This signal comes from the unit of FIG. execution control 22.

2908539 36 Cette étape est suivie d'une étape de test (étape E1201) afin de déterminer si le navigateur est déjà en mode émission , en particulier, si le résultat nouvellement détecté se trouve à l'intérieur du résultat précédent. Dans le cas négatif, l'algorithme se poursuit à l'étape E1202 au cours 5 de laquelle le mode émission est activé. Pour ce faire, la valeur du champ émission du navigateur est positionné à la valeur vrai. Ensuite, lors de l'étape suivante (étape E1203), le signal de début de résultat est émis vers l'application. Ce signal étant pris en charge par l'un des gestionnaires d'évènements de l'application.This step is followed by a test step (step E1201) to determine if the browser is already in transmission mode, in particular, if the newly detected result is within the previous result. In the negative case, the algorithm continues in step E1202 during which the transmission mode is activated. To do this, the value of the sending field of the browser is set to true. Then, in the next step (step E1203), the start of result signal is sent to the application. This signal is supported by one of the event handlers of the application.

10 En effet, l'application peut mettre en oeuvre des gestionnaires d'évènements, par exemple similaires à ceux des analyseurs XML, ayant une interface de type SAX (tel que décrit notamment à l'adresse suivante : sax.sourceforge.net/) et des gestionnaires spécifiques à l'utilisation du processeur XPath comme un gestionnaire de début et fin de résultat.Indeed, the application can implement event handlers, for example similar to those of XML parsers, having a SAX type interface (as described in particular at the following address: sax.sourceforge.net/) and specific managers to use the XPath processor as a start and end result handler.

15 Si le test de l'étape E1201 s'avère positif, le mode stockage du navigateur XPath 23 est alors activé à l'étape E1204. Ensuite l'étape E1205 permet au navigateur XPath d'indexer ce noeud correspondant à un début de résultat emboîté dans une liste de début de résultats. Cette liste sera utilisée pour détecter la fin d'un résultat emboîté et pour émettre les noeuds 20 correspondant au moment opportun. La figure 13 décrit le traitement de tout évènement XML extrait par le navigateur XPath 23. Ce traitement débute (étape E1300) avec la lecture d'un nouvel évènement dans le flux XML 4 au moyen d'un analyseur XML 3.If the test of step E1201 proves to be positive, the storage mode of the XPath navigator 23 is then activated in step E1204. Then, step E1205 allows the XPath browser to index this node corresponding to a result start nested in a start list of results. This list will be used to detect the end of a nested result and to issue the corresponding nodes at the appropriate time. FIG. 13 describes the processing of any XML event extracted by the XPath navigator 23. This processing starts (step E1300) with the reading of a new event in the XML stream 4 by means of an XML parser 3.

25 L'étape E1300 est suivie de l'étape E1301 au cours de laquelle cet évènement est traduit en noeud XPath et conservé en mémoire du navigateur XPath 23 en vue de son évaluation (étape E715) par l'unité de contrôle d'exécution 22. L'étape suivante E1302 consiste à vérifier si le mode d'émission du 30 navigateur XPath 23 est actif ou non.Step E1300 is followed by step E1301 during which this event is translated into an XPath node and stored in memory of the XPath browser 23 for evaluation (step E715) by the execution control unit 22. The next step E1302 is to check whether the transmission mode of the XPath navigator 23 is active or not.

2908539 37 Si ce n'est pas le cas, le noeud est effacé de la mémoire du navigateur XPath 23 et le navigateur attend que l'unité de contrôle d'exécution 22 lui demande d'effectuer une recherche d'un nouveau candidat (étape E714). Si le test de l'étape E1302 est positif, le navigateur XPath doit 5 émettre le noeud courant. Préalablement à cette émission, au cours de l'étape E1304, on vérifie si le mode stockage est actif. Si tel est le cas, l'étape E1304 est suivie de l'étape E1305 au cours de laquelle le noeud courant est marqué comme devant être conservé après 10 son émission. Ce marquage associe également le cas échéant l'information début ou fin de résultat sur les noeuds correspondant respectivement à des débuts et à des fins d'éléments. L'étape suivante E1306 consiste à vérifier si le noeud courant 15 représente la fin du dernier résultat détecté. Selon un mode de réalisation, ce test vérifie que le noeud courant est une balise fermante de la même profondeur que la balise ouvrante ayant donné lieu à cette détection de résultat. Si tel est le cas, l'algorithme se poursuit à l'étape E1307 de désactivation du mode stockage . Puis le noeud est émis lors de l'étape 20 E1308. Si le test de l'étape E1306 est négatif, le noeud est émis à l'étape E1308. Cette étape E1308 émet le noeud vers l'application sans toutefois l'effacer de la mémoire du navigateur XPath 23. Dans le cas d'un test de l'étape E1304 négatif, l'étape suivante 25 (étape E1309) consiste à vérifier si le noeud courant correspond à la fin du résultat courant. Autrement dit, cela consiste à s'assurer, si le résultat courant correspond à un élément, que le noeud courant correspond à une balise fermante de ce noeud élément résultat.If this is not the case, the node is cleared from the memory of the XPath browser 23 and the browser waits for the execution control unit 22 to request a search for a new candidate (step 22). E714). If the test of step E1302 is positive, the XPath browser must emit the current node. Prior to this transmission, during step E1304, it is checked whether the storage mode is active. If this is the case, step E1304 is followed by step E1305 in which the current node is marked as to be retained after it is transmitted. This marking also associates if necessary the information beginning or end of result on the nodes respectively corresponding to beginnings and ends of elements. The next step E1306 is to check if the current node represents the end of the last detected result. According to one embodiment, this test verifies that the current node is a closing tag of the same depth as the opening tag that gave rise to this result detection. If this is the case, the algorithm continues in step E1307 of deactivating the storage mode. Then the node is emitted in step E1308. If the test of step E1306 is negative, the node is emitted in step E1308. This step E1308 transmits the node to the application without, however, deleting it from the memory of the XPath navigator 23. In the case of a test of the negative step E1304, the next step 25 (step E1309) consists in checking whether the current node corresponds to the end of the current result. In other words, it consists of ensuring, if the current result corresponds to an element, that the current node corresponds to a closing tag of this result element node.

30 Pour tout autre type de noeud, le noeud lui-même est à la fois début et fin de résultat.For any other type of node, the node itself is both the beginning and the end of the result.

2908539 38 Si le test de l'étape E1309 est positif, la fin du résultat courant est atteinte et le mode émission est donc désactivé lors de l'étape E1310. Puis à l'étape E1311, le noeud est émis et effacé de la mémoire du navigateur XPath.If the test of step E1309 is positive, the end of the current result is reached and the transmission mode is thus deactivated in step E1310. Then in step E1311, the node is sent and cleared from the memory of the XPath browser.

5 L'étape E1311 est suivie de l'étape E1312 au cours de laquelle le signal de fin de résultat est émis. L'étape suivante (étape E1313) consiste à émettre d'éventuels résultats emboîtés. Cette étape est détaillée ci-après en référence à la Figure 14.Step E1311 is followed by step E1312 in which the end of result signal is issued. The next step (step E1313) consists of issuing any nested results. This step is detailed below with reference to Figure 14.

10 Si le test de l'étape E1309 est négatif alors l'algorithme se termine à l'étape E1314 au cours de laquelle le noeud courant est émis. En référence à la figure 14, l'algorithme débute à l'étape E1400 au cours de laquelle le navigateur XPath vérifie si la liste de débuts de résultats emboîtés est vide.If the test of step E1309 is negative then the algorithm ends in step E1314 during which the current node is transmitted. Referring to Fig. 14, the algorithm starts at step E1400 in which the XPath browser checks whether the nested result debug list is empty.

15 Si la liste n'est pas vide, il récupère le premier début de résultat lors de l'étape E1401. Cette étape est ensuite suivie de l'envoi d'un signal de début de résultat à l'étape E1402. Le noeud courant est ensuite émis et retiré de la mémoire du navigateur XPath lors de l'étape E1403.If the list is not empty, it retrieves the first result beginning in step E1401. This step is then followed by sending a start-of-result signal to step E1402. The current node is then transmitted and removed from the XPath browser memory in step E1403.

20 Cette étape est suivie de l'étape E1404 consistant à récupérer le noeud suivant. L'étape E1404 est suivie de l'étape E1405 au cours de laquelle on teste si ce noeud est marqué comme appartenant à un autre résultat emboîté. Si tel est le cas, alors l'algorithme se poursuit à l'étape E1406 au 25 cours de laquelle on vérifie s'il s'agit de la fin du résultat courant. Dans le cas positif, l'étape E1406 est suivie de l'étape E1407 au cours de laquelle le noeud correspondant est émis. Le noeud est également effacé de la mémoire du navigateur XPath. Puis le signal de fin de résultat est émis à l'étape suivante E1408, 30 puis on itère sur la liste d'index de débuts de résultats (étape E1400), jusqu'à ce que cette liste soit vide.This step is followed by step E1404 of recovering the next node. Step E1404 is followed by step E1405 in which it tests whether this node is marked as belonging to another nested result. If this is the case, then the algorithm proceeds to step E1406 during which it is checked whether it is the end of the current result. In the positive case, the step E1406 is followed by the step E1407 during which the corresponding node is emitted. The node is also cleared from the XPath browser memory. Then the end of result signal is issued in the next step E1408, and then iterates on the result start index list (step E1400), until that list is empty.

2908539 39 De retour au test lors de l'étape E1406, si le noeud courant ne correspond pas à la fin du résultat courant, il s'agit alors d'un noeud appartenant au résultat et celui-ci est émis lors de l'étape suivante (étape E1410). Cette étape est suivie de l'étape E1404 au cours de laquelle le parcours de la liste de 5 noeuds est poursuivi. De retour au test de l'étape E1405, si le noeud n'est pas marqué alors celui-ci est émis puis retiré de la liste de noeuds du navigateur XPath 23 lors de l'étape E1409. Ensuite, cette étape est suivie de l'étape E1404 précédemment 10 décrite afin de parcourir les prochains noeuds. Ainsi, l'invention fournit un moyen d'évaluer des expressions XPath à la volée. Pour cela, le processeur XPath utilise au moins un navigateur XPath, un navigateur principal restant positionné sur un noeud potentiellement résultat, et éventuellement un ou plusieurs autres navigateurs explorant localement les 15 données XML. De plus, afin de détecter d'éventuelles solutions emboitées, le processeur analyse les étapes de localisation des expressions relatives à un chemin de localisation pour leur assigner un mode de test spécifique si besoin et ne stocker l'historique des noeuds que lorsque nécessaire.Back to the test during step E1406, if the current node does not correspond to the end of the current result, it is then a node belonging to the result and it is emitted during the step following (step E1410). This step is followed by step E1404 in which the course of the list of 5 nodes is continued. Returning to the test of step E1405, if the node is not marked then it is issued and removed from the list of nodes of the browser XPath 23 in step E1409. Next, this step is followed by step E1404 previously described in order to traverse the next nodes. Thus, the invention provides a means of evaluating XPath expressions on the fly. For this, the XPath processor uses at least one XPath browser, a main browser remaining positioned on a potentially resultant node, and possibly one or more other browsers locally exploring the XML data. In addition, in order to detect possible nested solutions, the processor analyzes the location steps of the expressions relating to a location path to assign them a specific test mode if necessary and store the history of the nodes only when necessary.

Claims (25)

REVENDICATIONS 1. Procédé d'évaluation d'une expression pour accéder à au moins une partie d'un document structuré au moyen d'au moins un navigateur apte à extraire les données structurées du document, l'expression étant composée d'au moins deux sous expressions relatives chacune à un chemin de localisation, caractérisé en ce qu'il comprend une étape d'évaluation de chacune des sous-expressions sur la base des données du document au moyen d'au moins un navigateur distinct pour chaque sous-expression.  A method of evaluating an expression for accessing at least a portion of a structured document by means of at least one browser capable of extracting the structured data from the document, the expression being composed of at least two expressions each relating to a location path, characterized in that it comprises a step of evaluating each of the subexpressions on the basis of the data of the document by means of at least one separate browser for each subexpression. 2. Procédé d'évaluation selon la revendication 1, caractérisé en ce qu'il comprend une étape préalable de détermination du nombre de navigateurs.  2. Evaluation method according to claim 1, characterized in that it comprises a preliminary step of determining the number of browsers. 3. Procédé d'évaluation selon la revendication 1 ou la revendication 2, caractérisé en ce que chaque sous-expression relative à un chemin comprend un ensemble d'étapes de localisation.  3. Evaluation method according to claim 1 or claim 2, characterized in that each subexpression relating to a path comprises a set of location steps. 4. Procédé d'évaluation selon la revendication 3, caractérisé en ce 20 que chaque étape de localisation comprend au moins une entité exprimant une filiation entre les données structurées.  4. Evaluation method according to claim 3, characterized in that each location step comprises at least one entity expressing a filiation between the structured data. 5. Procédé d'évaluation selon la revendication 4, caractérisé en ce que la filiation est une filiation indirecte.  5. Evaluation method according to claim 4, characterized in that the filiation is indirect filiation. 6. Procédé d'évaluation selon la revendication 5, caractérisé en ce que le procédé comprend une étape de détermination des sous- expressions ayant au moins une entité exprimant une filiation indirecte. 30  6. Evaluation method according to claim 5, characterized in that the method comprises a step of determining sub-expressions having at least one entity expressing indirect filiation. 30 7. Procédé d'évaluation selon la revendication 6, caractérisé en ce qu'il comprend une étape de test approfondi sur ladite au moins une entité 25 2908539 41 exprimant une filiation indirecte, le test approfondi étant fonction de conditions sur les données et sur les évaluations précédentes desdites données.  7. Evaluation method according to claim 6, characterized in that it comprises a step of extensive testing on said at least one entity expressing indirect filiation, the in-depth test being a function of conditions on the data and on the data. previous evaluations of said data. 8. Procédé d'évaluation selon la revendication 7, caractérisé en ce 5 que le procédé comprend : - une étape d'extraction des données sur la base desquelles les sous-expressions sont évaluées ; et - une étape de mémorisation des données extraites. 10  8. Evaluation method according to claim 7, characterized in that the method comprises: a step of extracting the data on the basis of which the subexpressions are evaluated; and a step of storing the extracted data. 10 9. Procédé d'évaluation selon l'une quelconque des revendications précédentes, caractérisé en ce que lors de l'évaluation d'une seconde sous-expression faisant suite à une première sous-expression, ledit au moins un navigateur de la seconde sous-expression est initialisé avec le contexte du navigateur de la première sous-expression. 15  9. Evaluation method according to any one of the preceding claims, characterized in that during the evaluation of a second subexpression following a first subexpression, said at least one browser of the second subset. expression is initialized with the browser context of the first subexpression. 15 10. Procédé d'évaluation selon l'une quelconque des revendications précédentes, caractérisé en ce que chacun desdits navigateurs pilote au moins un analyseur du document structuré.  10. Evaluation method according to any one of the preceding claims, characterized in that each of said browsers controls at least one analyzer of the structured document. 11. Procédé d'évaluation selon la revendication 10, caractérisé en ce que si des navigateurs utilisent un même analyseur (3), les données extraites par un navigateur sont réutilisées par un autre navigateur utilisant ce même analyseur.  11. Evaluation method according to claim 10, characterized in that if browsers use the same analyzer (3), the data extracted by a browser are reused by another browser using the same analyzer. 12. Procédé d'évaluation selon l'une quelconque des revendications précédentes, caractérisé en ce que le procédé comprend une étape de détermination des données extraites du document vérifiant l'ensemble des sous-expressions.  12. Evaluation method according to any one of the preceding claims, characterized in that the method comprises a step of determining the data extracted from the document verifying all the subexpressions. 13. Procédé d'évaluation selon la revendication 12, caractérisé en ce que dès que des données sont déterminées, lesdites données sont fournies à une application apte à traiter ces données. 2908539 42  13. Evaluation method according to claim 12, characterized in that as soon as data are determined, said data are provided to an application capable of processing these data. 2908539 42 14. Procédé d'évaluation selon la revendication 12, caractérisé en ce que les données déterminées sont mémorisées. 5  14. Evaluation method according to claim 12, characterized in that the determined data are stored. 5 15. Procédé d'évaluation selon la revendication 12, caractérisé en ce que si des données déterminées ont une relation de filiation directe ou indirecte avec des données préalablement déterminées, alors ces données sont émises après les données préalablement déterminées. 10  15. Evaluation method according to claim 12, characterized in that if determined data have a direct or indirect relationship of filiation with previously determined data, then these data are issued after the previously determined data. 10 16. Procédé d'évaluation selon la revendication 15, caractérisé en ce que l'émission des données déterminées est précédé d'un signal de début et est suivi d'un signal de fin.  16. Evaluation method according to claim 15, characterized in that the transmission of the determined data is preceded by a start signal and is followed by an end signal. 17. Procédé d'évaluation selon l'une quelconque des revendications 15 précédentes, caractérisé en ce que l'expression est une expression de type XPath.  17. Evaluation method according to any one of the preceding claims, characterized in that the expression is an expression of XPath type. 18. Dispositif d'évaluation d'une expression pour accéder à au moins une partie d'un document structuré au moyen d'au moins un navigateur apte à 20 extraire les données structurées du document, l'expression étant composée d'au moins deux sous expressions relatives chacune à un chemin de localisation, caractérisé en ce qu'il comprend des moyens d'évaluation de chacune des sous-expressions sur la base des données du document au moyen d'au moins un navigateur distinct pour chaque sous-expression. 25  18. An expression evaluation device for accessing at least a portion of a structured document by means of at least one browser able to extract the structured data from the document, the expression being composed of at least two under expressions each relating to a location path, characterized in that it comprises means for evaluating each of the subexpressions on the basis of the data of the document by means of at least one separate browser for each subexpression. 25 19. Dispositif d'évaluation selon la revendication 18, caractérisé en ce qu'il comprend des moyens de détermination du nombre de navigateurs.  19. Evaluation device according to claim 18, characterized in that it comprises means for determining the number of browsers. 20. Dispositif d'évaluation selon la revendication 18 ou la 30 revendication 19, caractérisé en ce que chaque sous-expression relative à un chemin comprend un ensemble d'étapes de localisation. 2908539 43  20. An evaluation apparatus according to claim 18 or claim 19, characterized in that each path-related subexpression comprises a set of locating steps. 2908539 43 21. Dispositif d'évaluation selon la revendication 20, caractérisé en ce que chaque étape de localisation comprend au moins une entité exprimant une filiation entre les données structurées. 5  21. Evaluation device according to claim 20, characterized in that each location step comprises at least one entity expressing a filiation between the structured data. 5 22. Dispositif d'évaluation selon la revendication 21, caractérisé en ce que la filiation est une filiation indirecte.  22. Evaluation device according to claim 21, characterized in that the filiation is indirect filiation. 23. Dispositif d'évaluation selon la revendication 22, caractérisé en ce que le dispositif comprend des moyens de détermination des sous-10 expressions ayant au moins une entité exprimant une filiation indirecte.  23. Evaluation device according to claim 22, characterized in that the device comprises means for determining sub-expressions having at least one entity expressing indirect filiation. 24. Dispositif d'évaluation selon la revendication 23, caractérisé en ce qu'il comprend des moyens de test approfondi sur ladite au moins une entité exprimant une filiation indirecte, le test approfondi étant fonction de conditions 15 sur les données et sur les évaluations précédentes desdites données.  24. Evaluation device according to claim 23, characterized in that it comprises means for in-depth testing on said at least one entity expressing indirect filiation, the in-depth test being a function of conditions on the data and on the previous evaluations. said data. 25. Dispositif d'évaluation selon la revendication 24, caractérisé en ce que le dispositif comprend : - des moyens d'extraction des données sur la base desquelles les 20 sous-expressions sont évaluées ; et - des moyens de mémorisation des données extraites. 28. Dispositif d'évaluation selon l'une quelconque des revendications 18 à 25, caractérisé en ce qu'il comprend des moyens d'initialisation aptes à 25 initialiser ledit au moins un navigateur de la seconde sous-expression avec le contexte du navigateur de la première sous-expression lors de l'évaluation d'une seconde sous-expression faisant suite à une première sous-expression. 29. Dispositif d'évaluation selon l'une quelconque des revendications 30 18 à 26, caractérisé en ce que chacun desdits navigateurs pilote au moins un analyseur du document structuré. 2908539 44 28. Programme d'ordinateur chargeable dans un système informatique, ledit programme contenant des instructions permettant la mise en oeuvre du procédé d'évaluation d'une expression selon l'une quelconque des revendications 1 à 17, lorsque ce programme est chargé et exécuté par un 5 système informatique. 29. Moyen de stockage d'informations, amovible ou non, partiellement ou totalement lisible par un ordinateur ou un microprocesseur comportant des instructions de code d'un programme d'ordinateur pour 10 l'exécution des étapes du procédé d'évaluation d'une expression selon l'une quelconque des revendications 1 à 17.  25. Evaluation device according to claim 24, characterized in that the device comprises: data extraction means on the basis of which the subexpressions are evaluated; and - storage means of the extracted data. 28. Evaluation device according to any one of claims 18 to 25, characterized in that it comprises initialization means capable of initializing said at least one browser of the second sub-expression with the context of the browser of the first subexpression when evaluating a second subexpression following a first subexpression. 29. An evaluation device according to any one of claims 18 to 26, characterized in that each of said browsers controls at least one analyzer of the structured document. 28. A computer program loadable into a computer system, said program containing instructions for implementing the method of evaluating an expression according to any one of claims 1 to 17, when the program is loaded and executed by a computer system. 29. Information storage medium, removable or not, partially or completely readable by a computer or a microprocessor comprising code instructions of a computer program for the execution of the steps of the evaluation method of a computer. expression according to any one of claims 1 to 17.
FR0654920A 2006-11-15 2006-11-15 METHOD AND APPARATUS FOR EVALUATING EXPRESSION ON THE DATA CONTAINED IN A STRUCTURED DOCUMENT. Expired - Fee Related FR2908539B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR0654920A FR2908539B1 (en) 2006-11-15 2006-11-15 METHOD AND APPARATUS FOR EVALUATING EXPRESSION ON THE DATA CONTAINED IN A STRUCTURED DOCUMENT.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0654920A FR2908539B1 (en) 2006-11-15 2006-11-15 METHOD AND APPARATUS FOR EVALUATING EXPRESSION ON THE DATA CONTAINED IN A STRUCTURED DOCUMENT.

Publications (2)

Publication Number Publication Date
FR2908539A1 true FR2908539A1 (en) 2008-05-16
FR2908539B1 FR2908539B1 (en) 2010-11-19

Family

ID=38294043

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0654920A Expired - Fee Related FR2908539B1 (en) 2006-11-15 2006-11-15 METHOD AND APPARATUS FOR EVALUATING EXPRESSION ON THE DATA CONTAINED IN A STRUCTURED DOCUMENT.

Country Status (1)

Country Link
FR (1) FR2908539B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050187906A1 (en) * 2004-02-20 2005-08-25 Umesh Madan Forward-only evaluation for XPATH inverse query processing
US20050257201A1 (en) * 2004-05-17 2005-11-17 International Business Machines Corporation Optimization of XPath expressions for evaluation upon streaming XML data
WO2006081474A2 (en) * 2005-01-27 2006-08-03 Intel Corp. Multi-path simultaneous xpath evaluation over data streams

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050187906A1 (en) * 2004-02-20 2005-08-25 Umesh Madan Forward-only evaluation for XPATH inverse query processing
US20050257201A1 (en) * 2004-05-17 2005-11-17 International Business Machines Corporation Optimization of XPath expressions for evaluation upon streaming XML data
WO2006081474A2 (en) * 2005-01-27 2006-08-03 Intel Corp. Multi-path simultaneous xpath evaluation over data streams

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TOBIAS KIESLING: "Towards a Streamed XPath Evaluation", 8 July 2002, INSTITUT FÜR INFORMATIK, MÜNCHEN, DEUTCHLAND, DIPLOMARBEIT, XP002446045 *

Also Published As

Publication number Publication date
FR2908539B1 (en) 2010-11-19

Similar Documents

Publication Publication Date Title
US11226795B2 (en) Efficient state machines for real-time dataflow programming
FR2909198A1 (en) Electronic document&#39;s element i.e. node, filtering method for e.g. microcomputer, involves evaluating expression on document data base according to evaluation mode identification information of expression
US8051105B1 (en) Directing searches on tree data structures
US9892191B2 (en) Complex query handling
FR2824160A1 (en) DYNAMICALLY CONFIGURABLE GENERIC CONTAINER
FR2821186A1 (en) DEVICE FOR EXTRACTING INFORMATION FROM A KNOWLEDGE BASED TEXT
FR3003369A1 (en) SYSTEM AND METHOD FOR IDENTIFICATION AND ANALYSIS OF MAINTENANCE DATA ENTITIES
WO2006136565A1 (en) Data processing method compatible with an object modelling formalism
FR2926378A1 (en) METHOD AND PROCESSING DEVICE FOR ENCODING A HIERARCHISED DATA DOCUMENT
FR2798204A1 (en) Ranked break-points for debugging computer programs to allow selective disabling of multiple break points for more effective production of complex programs
FR2934388A1 (en) METHOD FOR CREATING COMPUTER PROGRAM
FR2826753A1 (en) Processing of an Extended Markup Language XML document in an Internet network, in which user selects a markup language and a list of its functions is displayed and XML document is associated with Schema XML language
US20220147433A1 (en) Automation solutions for event logging and debugging on kubernetes
FR2958059A1 (en) METHOD, COMPUTER PROGRAM, AND TASK EXECUTION VALIDATION DEVICE IN EVOLUTIVE COMPUTER SYSTEMS
FR2826748A1 (en) Description of an interface applicable to a data object, uses Extended Markup Language XML and XML schema language associated with the XML language to describe parts of a function
FR2912275A1 (en) METHOD FOR TRANSMITTING AT LEAST ONE REPRESENTATIVE CONTENT OF A SERVICE FROM A SERVER TO A TERMINAL, DEVICE AND CORRESPONDING COMPUTER PROGRAM PRODUCT
FR2908539A1 (en) Expression e.g. XML Path expression, evaluating method for processing XML data flow, involves evaluating each sub-expression relative to location path on data of structured document using XML path browser
FR2925721A1 (en) Expressions i.e. XML path language expressions, compiling method for e.g. microcomputer, involves constructing representation such that complied representation of relative expression has link to complied representation of context expression
EP3729273B1 (en) System and method for formulating and executing fonctional tests for cluster de servers
FR2906382A1 (en) METHODS AND DEVICES FOR OPTIMIZING XML PROCESSING
FR2914758A1 (en) Expression e.g. XML path type expression, modifying method for e.g. microcomputer, involves modifying sub-expression when incoherence exists between type of parameter and type associated to evaluation result
FR3060800A1 (en) METHOD AND DEVICE FOR AUTOMATICALLY INDEXING A TEXTUAL DOCUMENT
FR2911200A1 (en) Document processing method for use in local or remote computer system, involves enhancing outline of document, and detecting reference components in document using enhanced outline by using central processing unit and memories
Piao Nouvelle architecture pour les environnements de développement intégré et traçage de logiciel
FR2914451A1 (en) Item expression evaluating method for XML document, involves generating target nodes and logical representation, and evaluating expression on items of structured document from all generated target nodes and logical representation

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20140731