XPath XML:Autres fonctions
Un article de WikiTuto.
Sommaire |
Accéder à un autre document avec document()
Introduction
Il est parfois nécessaire d'accéder à un document extérieur au fichier XML en cours de transformation, pour y récupérer une information particulière. XPath le permet grâce à la fonction document(chaine). Cette fonction prend comme argument une chaîne de caractères donnant le chemin vers le fichier à ouvrir. Il faut ensuite spécifier le chemin vers l'élément cherché, à partir de la racine.
Exemple
Supposons que nous soyons en train de transformer un fichier biblio.xml, contenant une liste de livres, pour lesquels on donne un auteur :
<biblio>
<livre>(...)</livre>
<livre>(...)</livre>
<livre>
<titre>Les Misérables</titre>
<auteur prénom="Victor" nom="Hugo" />
</livre>
</biblio>
En parallèle, on dispose d'un fichier auteurs.xml possédant des références biographiques sur des auteurs, dont Victor Hugo :
<biographies>
<auteur>(...)</auteur>
<auteur>(...)</auteur>
<auteur prénom="Victor" nomFamille="Hugo">
<naissance><date>1802</date>(...)</naissance>
<décès><date>1885</date>(...)</décès>
<biographie>(...)</biographie>
</auteur>
</biographies>
Lors de la transformation du fichier biblio.xml, on peut accéder à ces informations avec la commande suivante :
<xsl:variable name="nomAuteur" select="@nom" />
<xsl:variable name="prénomAuteur" select="@prénom" />
<xsl:value-of select="document('auteurs.xml')//auteur[@prénom=$prénomAuteur and @nomFamille=$nomAuteur]/naissance/date" />
<xsl:value-of select="document('auteurs.xml')//auteur[@prénom=$prénomAuteur and @nomFamille=$nomAuteur]/décès/date" />



