La 9ème édition du Forum PHP dans les starting-blocks

septembre 28, 2009
Tags: , ,

logo ARTICLE 390

L’édition 2009 du rendez-vous incontournable des utilisateurs PHP en France s’installe à la Cité des Sciences de La Villette, les 12 et 13 novembre 2009.
Une édition qui mettra à l’honneur le couple PHP/MySQL, avec un invité de marque, pour la 1ère fois en France : Michael « Monty » Widenius.
L’événement estampillé AFUP (Association Française des Utilisateurs de PHP) réunira durant 2 jours quelques grands experts internationaux du monde PHP, qui viendront échanger autour des problématiques phares du langage open source. L’occasion de faire le point sur les évolutions fonctionnelle et technique, communautaire et entreprise de PHP.

Cette 9ème édition sera axée sur le couple PHP/MySQL, avec 8 conférences dédiées. LEMUG.fr, l’association francophone des utilisateurs de MySQL et partenaire de l’événement animera 3 conférences.

Le Forum PHP accueillera en exclusivité et pour la première fois en France, Michael « Monty » Widenius, le créateur de MySQL. Suite au rachat de MySQL AB dont il était le co-fondateur, Monty a créé l’Open Database Alliance, un consortium et un lieu d’échanges pour tous les acteurs de l’écosystème de la base de données. Par ailleurs il fonde Monty Program ab, et poursuit le développement de MariaDB. A ce titre Monty présentera une conférence intitulée : « MariaDB the future of MySQL ».

Le PHP se décline au féminin avec la participation de : Zoe Slattery, PHP Women. Zoe a œuvré pour le compte d’IBM pendant 20 ans. En 2007, elle s’implique dans la promotion de PHP et développe des phases de tests. Anna Filina, PHP Québec, animera une conférence dédiée aux décideurs sur l’analyse des comportements des développeurs.

Reconnu mondialement comme une alternative de choix aux langages de programmation .Net ou J2EE, PHP est aujourd’hui une technologie mature qui entre dans une phase d’industrialisation. Largement adopté dans le monde de l’entreprise, PHP est un élément clé des infrastructures Web.

L’édition 2009 sera l’opportunité d’aborder l’industrialisation, la professionnalisation et la maturation du langage PHP avec une formule qui fait son succès chaque année : des conférences animées par les meilleurs experts internationaux des retours d’expérience issus des grands comptes des ateliers pratiques

… :: FOCUS PROGRAMME – À NE PAS MANQUER ::…

Conférences

« MariaDB the future of MySQL » – Michael « Monty » Widenius, le père de MySQL « Oui, PHP est industriel ! » – Damien Seguy, Alter Way Consulting Conférences LEMUG.FR : Stéphane Varoqui consultant MySQL; Serge Frezefond, Directeur technique MySQL France, Sun Microsystems ; Olivier Dasini, Retour d’epérience de  MySQL à Orange Business Service. « Jouons avec PHP 5.3 » – Fabien Potencier, créateur du framework PHP Symfony et Co-fondateur de Sensio Labs. « PHP and MySQL : a good match » – Johannes Schlüter, Sun Microsystems. Johannes est responsable de la publication de la version 5.3 de PHP, Julien Pauli, architecte certifié PHP et ZendFramework chez Anaska Alter-Way Formation

Témoignages utilisateurs

Réplication MySQL, WAT TV Migration de J2EE vers PHP, M6 Web Ultimedia et Jukebo 2.0, Digiteka Retour d’expérience, Orange

A propos de l’AFUP L’Association Française des Utilisateurs de PHP (AFUP), est une association dont le principal but est de promouvoir le PHP auprès des professionnels et de participer à son développement.

Contact : bureau@afup.org

En savoir plus : http://afup.org/pages/forumphp2009/

Inscription: http://afup.org/pages/forumphp2009/inscription.php

Conférenciers: http://afup.org/pages/forumphp2009/conferenciers.php

Commentaires fermés sur La 9ème édition du Forum PHP dans les starting-blocks

Utiliser XML avec MySQL 5.1 (part 4/5)

septembre 16, 2009
Tags: ,

(<- précédent)

Les fonctionnalités XPath de MySQL 5

MySQL 5 offre la possibilité de pouvoir exécuter des requêtes XPath sur un flux XML, grâce à la fonction extractValue().

Le résultat récupéré est la concaténation de la valeur textuelle de chacun des nœuds trouvés (chaque valeur étant dissociée des autres par un espace blanc).

Comment récupérer la valeur de l’élément racine d’un flux XML ?

Extraire des données d’une variable contenant du XML

/*Contenu du fichier XML */

shell> cat formateur.xml
<opensource>
Les formateurs de l'équipe sont :
<formateur domaines="MySQL PHP">
<nom>Dasini</nom>
<prenom>Olivier</prenom>
</formateur>
<formateur domaines="PHP XML">
<nom>Allard</nom>
<prenom>Fabien</prenom>
</formateur>
<formateur domaines="Linux MySQL">
<nom>Dumont</nom>
<prenom>Pierre</prenom>
</formateur>
et sont passionnés par l'open source.
</opensource>

/* Initialisation de la variable @xml avec le contenu du fichier formateur.xml */

mysql> SET @xml = LOAD_FILE( './formateur .xml');

/* Récupération de la valeur de l’élément racine */

mysql> SELECT extractValue( @xml, '/opensource')\G
*************************** 1. row ***************************
extractValue( @xml, '/opensource'):

Les formateurs de l’équipe sont :

et sont passionnés par l’open source.

Comme vous pouvez le constater les éléments enfants de l’élément racine sont supprimés de la sélection : seul le contenu propre des éléments recherchés est donc intégré au résultat.

Autre exemple, on veut sélectionner le deuxième formateur de notre flux XML, ainsi que les formateurs qui ont pour domaine de compétence MySQL:

Extraire le deuxième formateur et les formateurs MySQL

mysql> SELECT extractValue( @xml, ‘/opensource/formateur[2]/nom’) AS Deuxieme, extractValue( @xml, ‘/opensource/formateur[contains( @domaines, « MySQL »)]/nom’) AS MySQL;
+———-+—————+
| Deuxieme | MySQL |
+———-+—————+
| Allard | Dasini Dumont |
+———-+—————+

Comme vous avez pu le constater, XPath est également un langage d’interrogation. Examinons d’un peu plus près sa syntaxe.

Une expression XPath représente ce qui est appelé un chemin de localisation (très similaire au chemin permettant d’identifier un fichier) dans lequel chaque nœud est séparé des autres avec un /.

Généralement, la recherche s’effectue en fonction de deux types de nœuds distincts :

  • les nœuds éléments, renseignés par leur nom,

  • les attributs, indiqués par un @ accolé à leur nom.

Ainsi l’expression formateur/@domaines réfère l’attribut appelé domaines des éléments nommés formateur.

Pour pouvoir filtrer plus finement les éléments, XPath dispose des prédicats.

Chacun de ces prédicats est spécifié dans une paire de crochets [expression].

Une expression peut être soit une simple évaluation, soit utiliser une (ou plusieurs) fonction(s).

Par exemple formateur[@domaines= »Linux MySQL »][contains( nom, « Dumont »)]/prenom retrouve tous les prénoms des formateurs qui ont pour domaines Linux MySQL et qui possèdent un nom valant Dumont.

Les chemins de localisation utilisés peuvent être indiqués de façon absolue ou de façon relative. Dans ce deuxième cas, la recherche s’effectue en fonction du nœud contexte.

Dans l’expression précédente, l’attribut domaines testé est celui de l’élément formateur.

Enfin, il est possible de se déplacer dans l’arborescence (un . représente le nœud courant, et .. le nœud parent).

Ainsi formateur/prenom[../@domaines= »Linux MySQL »][contains( ../nom, « Dumont »)] est équivalente à l’expression précédente.

(à suivre… utiliser XML avec MySQL 5.1 : Extraire les données d’un flux XML stocké en base)

Commentaires fermés sur Utiliser XML avec MySQL 5.1 (part 4/5)

Forum MySQL: 12 et 13 Novembre 2009

septembre 8, 2009

L’association LeMug.fr (MySQL User Group francophone) organisera son forum MySQL avec l’aide de l’Association Française des Utilisateurs de PHP (http://www.afup.org) les 12 et 13 Novembre 2009 à la Cité des Sciences et de l’Industrie.

Plusieurs conférences sont prévues sur la base de données MySQL avec des intervenants de renom. Le programme est en cours de finalisation !

Les membres de l’association LeMug.fr bénéficient d’une réduction sur le tarif global !

Pour vous inscrire ou vous tenir au courant : http://afup.org/pages/forumphp2009/inscription.php

Commentaires fermés sur Forum MySQL: 12 et 13 Novembre 2009

L’Europe hésitante sur le rachat de Sun par Oracle

septembre 4, 2009
Tags: , ,

Avalisé par les autorités américaines de la concurrence, le rachat de Sun par Oracle patauge encore en Europe. Rien n’indique que l’exécutif européen donnera son feu vert pour le moment, car il vient d’ouvrir une enquête approfondie.

Rien n’est encore joué ! Bien que les autorités américaines aient donné leur accord pour le rachat de Sun par Oracle, à Bruxelles, le dossier est encore en standby.

C’est en tout cas ce que rapporte Reuters, expliquant que l’intégration de Sun, et notamment celle de MySQL, au portefeuille d’Oracle est relativement gênante. Car purement et simplement, ceci pourrait faire d’Oracle un acteur sur les bases de données en position dominante. Ce qui n’a pas semblé choquer les autorités américaines.

La Commission Européenne a d’ailleurs ouvert aujourd’hui une enquête approfondie sur la fusion des deux groupes. Celle-ci doit être conclue au plus tard le 19 janvier 2010 ! Le commissaire à la concurrence a déclaré que « La Commission doit examiner très soigneusement les effets sur la concurrence en Europe lorsque la première entreprise mondiale de base de données se propose de racheter la première entreprise mondiale de base de données open-source ». D’où les doutes entretenus jusqu’ici…

Soulignons également que Sun a très récemment annoncé une perte sèche de 147 millions de dollars (contre un bénéfice de 88 millions de dollars sur un an) et un recul des ventes de 31% sur le dernier trimestre fiscal.

http://www.linformaticien.com/Actualit%C3%A9s/tabid/58/newsid496/6900/l-europe-hesitante-sur-le-rachat-de-sun-par-oracle/Default.aspx

Récapitulatif de la saga:

http://dasini.net/blog/2009/04/21/oracle-achete-sun-donc-mysql/

http://dasini.net/blog/2009/06/30/oracle-et-sun-sous-la-loupe-de-la-justice-americaine/

http://dasini.net/blog/2009/07/03/rachat-de-sun-par-oracle-la-communaute-reagit-sur-php-tv/

http://dasini.net/blog/2009/08/05/bruxelles-mene-son-enquete-sur-le-rachat-de-sun-par-oracle/

http://dasini.net/blog/2009/08/26/oracle-sun-cest-valide-cote-americain/

Commentaires fermés sur L’Europe hésitante sur le rachat de Sun par Oracle

Combien de casquettes avez-vous ?

août 28, 2009

Un article de mon ami Julien Pauli, qui traite du grand écart entre les compétences requises et demandées pour un projet web et les salaires proposés…

Le Web est un ensemble de métiers. Je suis étonné de voir qu’on en demande toujours plus à des personnes ayant principalement un profil de développeur Web, mais à la fin du mois, c’est pas toujours plus. Allons, le métier de Webmaster n’est plus le même qu’il y a 10 ans, réveillons nous !

Soyons raisonnables, 2 personnes ne peuvent assurer la gestion d’un projet Web complet, orienté MVC (disons à 15 contrôleurs)
De la conception, en passant par l’architecture, la modélisation et le traitement des données, jusqu’au développement, testé, documenté, sécurisé, l’hébergement du projet et le dimensionnement matériel; on peut compter déjà une bonne dizaine de corps de métiers différents, pouvant chacun être composé de plusieurs personnes.

Saurez-vous analyser le besoin ? Le modéliser sous forme d’objets, en utilisant UML et ses nombreux schémas ? L’architecturer façon patterns de manière à rendre l’application évolutive, testable et compréhensible ?
Saurez vous créer un modèle ? A savoir modéliser les données métiers, créer des procédures stockées, des déclencheurs, des patterns d’accès ?
Si l’application nécessite scalabilité, saurez-vous la faire monter en charge ? Partitionner vos tables ? Répliquez vos données et balancez votre charge correctement ? Serez-vous capables de développer ce projet, en écrivant bien sûr des tests, tout en gérant des caches. Etes-vous d’attaque pour présenter des données avec xHTML et CSS de manière valide ? Maitrisez-vous Javascript et Ajax pour offrir une expérience utilisateur poussée ?

Vous avez le droit de répondre oui, à ce moment là j’envie réellement votre salaire ! On peut savoir tout faire, mais ouvrons les yeux sur les métiers du Web : on ne peut pas savoir tout faire bien, déja parce que le Web est trop complexe pour cela, et ensuite parce qu’une journée ne compte que 24h dans laquelle on travaille en moyenne 8h (officiellement payées).

Alors restons raisonnables. Il existe beaucoup de projets dans lesquels les responsabilités sont clairement définies, et les colles que sont les chefs de projets, très compétents.
En parallèle il existe aussi trop de projets dans lesquels seules 2 à 4 personnes sont comptées, et doivent à elles seules tout gérer, le tout en un temps record.

Une compétence se paye, si vous les additionnez, vous additionnez donc les paies qui vont avec, sinon lâchez vite l’affaire (en tout cas moi c’est ce que je ferai). On ne peut pas demander à quelqu’un de savoir (bien) faire du SQL, du PHP, du CSS et mettre en place un serveur de production. C’est affolant les offres d’emplois qu’on retrouve demandant ces savoir-faire combinés, mais avec des salaires qui ne sont souvent pas à la hauteur.
D’un autre coté les offres Java (Web), elles, sont bien plus précises, et en général un projet se compose de sommes de compétences très pointues et très distinctes. Pourquoi pas en PHP ?

Moralité : un projet sera beaucoup plus abouti (et coutera donc moins cher, en partant de la conception jusqu’à la maintenance) s’il est la somme de quelques compétences très qualifiées et poussées dans un domaine restreint, plutôt que la somme de beaucoup plus de compétences mais trop variées et disparates.

http://blog.developpez.com/julienpauli/p7994/dev-web-generaliste/combien-de-casquettes-avez-vous/

Commentaires fermés sur Combien de casquettes avez-vous ?

The Linux Foundation Video Site:: Linux pub

août 28, 2009

Dans quelques heures c’est le week-end qui commence 🙂 Pour fêter cela, voici une petite pub pour la linux fondation, qui vente les mérites de tux.

Cette pub n’est pas récente mais est assez sympathique. A voir ou à revoir 🙂

http://video.linuxfoundation.org/video/1057

Commentaires fermés sur The Linux Foundation Video Site:: Linux pub

Oracle-Sun : c’est validé… côté américain

août 26, 2009
Tags: , ,

Si la justice américaine a donné son feu vert à l’acquisition de Sun Microsystems par Oracle, les deux entreprises attendent encore celui de la Commission européenne.

Le suspens a pris fin (si tant est qu’il y en eut un). La Justice américaine (le DoJ) a validé l’acquisition de Sun Microsystems par Oracle signée en avril dernier, selon un communiqué (laconique) d’Oracle. Après moultes négociations avec IBM, Sun s’était finalement laissé séduire par la proposition d’Oracle en échange d’un chèque de 7,4 milliards de dollars, dette comprise.

Mais la récupération des actifs de Sun par le géant de la base de données amenait quelques questions autour d’éventuelles positions dominantes sur plusieurs marchés. A commencer par Java.

En mettant la main sur Sun, Oracle s’empare d’une technologie (langage de programmation et environnement d’exécution) utilisée par quelques 7 milliards d’appareils électroniques dont nombre de téléphones mobiles. Comme nombre de ses concurrents, Oracle est notamment un gros utilisateur de Java. Savoir que l’entreprise de Redwood City va désormais décider des développements de Java a effectivement de quoi inquiéter. Il faut croire qu’Oracle a fourni au DoJ des garanties en la matière.

Autre inquiétude, l’avenir de MySQL. Rachetée par Sun à MySQL AB en janvier 2008, la base de donnée open source tombe entre les mains du plus grand éditeur de base de données propriétaire. L’avenir de MySQL aurait donc pu être compromis, Oracle pouvant ainsi écarter une technologie concurrente potentielle notamment utilisée par des millions de services web. L’avenir le dira.

Si les autorités américaines ont donné leur feu vert, l’acquisition n’est pas encore définitive. Oracle attend maintenant l’aval de la Commission européenne. Ce qui pourrait ne pas tarder, Oracle et Sun ayant promis de boucler l’opération avant la fin de l’été. Les actionnaires de Sun avaient, de leur côté, validé l’offre d’Oracle le 16 juillet dernier.

http://www.silicon.fr/fr/news/2009/08/21/oracle_sun___c_est_valide____cote_americain

Récapitulatif de la saga:

http://dasini.net/blog/2009/04/21/oracle-achete-sun-donc-mysql/

http://dasini.net/blog/2009/06/30/oracle-et-sun-sous-la-loupe-de-la-justice-americaine/

http://dasini.net/blog/2009/07/03/rachat-de-sun-par-oracle-la-communaute-reagit-sur-php-tv/

http://dasini.net/blog/2009/08/05/bruxelles-mene-son-enquete-sur-le-rachat-de-sun-par-oracle/

Commentaires fermés sur Oracle-Sun : c’est validé… côté américain

Openstreetmap, la cartographie libre

août 18, 2009

En cette période estivale, un petit coup de projecteur sur un projet de cartographie libre: Openstreetmap

Openstreetmap est un projet destiné à réaliser une carte du monde, sous licence dite “libre”. Cela signifie,  que tout le monde est libre d’utiliser, d’améliorer, de distribuer ou d’effectuer des travaux dérivés à partir de nos cartes, donnant ainsi une liberté bien plus grande que les solutions déjà existantes, telles google maps ou yahoo maps.

Deux articles d’une série de six, pour connaître un peu mieux les aspirations de la communauté Open Street Map:

Les routards du web : « Nous sommes comme des fourmis »

Les routards du web : « Il suffit d’une paire d’yeux »

Lorsque l’on parle de cartographie, on parle souvent de souvent de géo-référencement. Voici OpenRouteService une alternative (encore limitée) à ViaMichelin, Mappy et autres…

OpenRouteService.org est un service européen d’information géo-référencée basé sur des standards (recherche de points d’intérêt, de géocodage inverse, calcul d’itinéraire voiture, vélo, piéton ) et tout cela avec les données libres d’ OpenStreetMap.
Ce service développé par l’Université de Bonn, couvre notamment la France.

1

!include

août 13, 2009

my.cnf, comme vous le savez certainement est le nom du fichier de configuration de MySQL. Vous pouvez également le retrouver sous le nom de my.ini en environnement MS Windows. Il permet comme son nom l’indique de configurer votre serveur MySQL en y centralisant les options de … configuration. Le but ici n’est pas de détailler la longue liste des paramètres de MySQL, la documentation officielle est (presque) bien faite, mais de mettre le « focus » sur la directive !include (avec un « ! » devant).

Cette dernière permet d’inclure un fichier de configuration dans un autre (sic). Autant je suis un adèpte de la non duplication du code en dévellopement (des require_once en PHP utilisés avec modération ça vous simplifie bien votre code), autant je ne suis pas un grand fan pour éclater la configuration de mon serveur MySQL en plusiseurs endroits. Cependant 🙂 il faut avouer que parfois cela peut servir !

Alors comment ça marche ?

C’est (apparemment) très simple. Mon client mysql va chercher sa configuration dans différents endroits (définit à la compilation):

daz@daz-laptop:~$ mysql –help
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf


Mon fichier de configuration se nomme  /etc/mysql/my.cnf et il contient simplement la directive !include suivit du « vraie » fichier de configuration:

daz@daz-laptop:~$ cat /etc/mysql/my.cnf
!include /home/daz/sandboxes/msb_5_1_35/my.sandbox.cnf


Et au final dans mon fichier de configuration (au passage j’utilise le très pratique soft développé par Giuseppe Maxia : MySQL Sandbox):

daz@daz-laptop:~$ cat /home/daz/sandboxes/msb_5_1_35/my.sandbox.cnf
[mysql]
prompt=’mysql [\h] {\u} (\d) > ‘
[client]
port = 5135
socket = /tmp/mysql_sandbox5135.sock


Simple non ?

C’est (presque) tout, et ça marche…pas 🙁

daz@daz-laptop:~$ mysql
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)


Une petite vérification s’impose:

daz@daz-laptop:~$ mysql –help
mysql  Ver 14.14 Distrib 5.1.35, for pc-linux-gnu (i686) using readline 5.1
port                              0
socket
(No default value)


Les paramètres ne sont pas prit en compte. (commentaire de l’expert: ça ne peut donc pas fonctionner)



(30 minutes et quelques insultes plus tard…)


En fait, la subtilité,  c’est de rajouter un saut à la ligne, à la fin de la commande !include /home/daz/sandboxes/msb_5_1_35/my.sandbox.cnf

daz@daz-laptop:~$ mysql –help
mysql  Ver 14.14 Distrib 5.1.35, for pc-linux-gnu (i686) using readline 5.1
port 5135
socket /tmp/mysql_sandbox5135.sock


Vérification (au cas où):

daz@daz-laptop:~$ mysql

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.1.35-log MySQL Community Server (GPL)
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql [localhost] {daz} ((none)) >


(commentaire de l’expert: ça fonctionne !)

🙂

Giuseppe Maxia

Commentaires fermés sur !include

Utiliser XML avec MySQL 5.1 (part 3/5)

août 10, 2009
Tags: ,

(<- précédent)

Interroger un flux XML avec Xpath

L’emploi de XML ne présenterait pas beaucoup d’intérêt sans la possibilité de pouvoir interroger sa structure pour accéder à une information particulière : le langage XPath répond à cette attente et est (en partie du moins) aujourd’hui intégré à MySQL. Mais avant de voir comment utiliser XPath à travers MySQL, il est nécessaire de se pencher sur la syntaxe de ses expressions, dont la construction la plus importante est sans conteste le chemin de localisation (location path).

Le chemin de localisation

De manière similaire à la navigation au sein d’un système de fichiers, un chemin de localisation se compose d’une succession d’étapes, séparées les unes des autres par un /. La description d’un chemin peut se faire de façon absolue ou relative, auquel cas un nœud contexte est utilisé afin de déterminer à partir de quel endroit doit s’effectuer la recherche.

Chaque étape d’un chemin de localisation peut se diviser en trois parties (axe de recherche, test du nœud et ensemble de prédicats), réunies sous la forme suivante :

Axis::Node-Test[Predicate1][Predicate2]…

L’axe de recherche (Axis)

L’axe de recherche permet de spécifier dans quel sens orienter la sélection des nœuds que l’on veut récupérer par rapport au nœud courant. Ainsi, il est possible de choisir de chercher dans l’ensemble des nœuds des descendants, plutôt que de se limiter (par défaut) aux nœuds directement enfants.

Il existe une dizaine d’axes de recherche, dont les plus usités sont :

  • child, qui limite à l’exploration des nœuds éléments directement enfants du nœud contexte,
  • descendant, qui englobe, en plus des nœuds enfants, tous les éléments descendants,
  • descendant-or-self, identique à descendant avec en plus le nœud contexte inclus,
  • ancestor, qui contient tous les nœuds ancêtres,
  • ancestor-or-self, identique à ancestor avec en plus le nœud contexte,
  • following-sibling, qui fait référence aux éléments frères suivants,
  • preceding-sibling, qui fait référence aux éléments frères précédents,
  • attribute, qui se cantonne à la recherche dans les nœuds attributs.

Le test du nœud (Node-Test)

Généralement, le test repose sur le nom du nœud que l’on veut retrouver. Cependant, XPath ne se limite pas à la recherche de simples éléments, mais à tous types de nœuds. Il est donc ainsi possible de préciser le type de nœud que l’on veut atteindre grâce aux fonctions suivantes :

  • node(), qui valide tous types de nœuds,
  • text(), pour les nœuds texte,
  • comment(), pour les commentaires,
  • processing-instruction(), pour les instructions de traitements.

Les prédicats (Predicates)

Les prédicats, délimités par un « [«  et un « ]« , permettent de filtrer plus finement l’ensemble des nœuds retrouvés par le chemin de localisation, en évaluant l’expression qu’ils contiennent et en ne retenant que les nœuds qui la valident. Plusieurs prédicats peuvent se suivre, filtrant ainsi un peu plus précisément l’ensemble des nœuds à garder.

Les expressions mises en place dans les prédicats peuvent, en plus des quelques fonctions existantes et des opérateurs habituels, exploiter des ensembles de nœuds (node-sets) récupérés grâce à… des chemins de localisation !

Ainsi, il est possible d’adapter la validité d’un chemin de localisation en fonction même de tout élément de l’arborescence du flux XML.

Par exemple, si l’on considère l’expression XPath suivante :

//article[@rubrique = /site/menu/rubrique[2]]

On récupère tous les articles qui possèdent un attribut rubrique ayant la même valeur que la deuxième rubrique du menu du site.

Cet autre exemple :

//article[not( @rubrique = preceding-sibling::article/@rubrique)]

permet de ne sélectionner que les articles qui n’ont pas leur attribut rubrique égal à l’attribut rubrique d’un article précédent. En d’autres termes, on ne récupère ici que le premier article de chaque rubrique.

Quelques raccourcis

Afin de faciliter la lecture et l’écriture de requêtes XPath, il existe bien heureusement un ensemble de raccourcis pratiques:

Raccourcis Xpath

self::node() .
parent::node() ..
attribute::name @name
//descendant-or-self::node()/ //
element[position() = X] element[X]

(à suivre… utiliser XML avec MySQL 5.1 : Les fonctionnalités Xpath de MySQL 5)

Commentaires fermés sur Utiliser XML avec MySQL 5.1 (part 3/5)