[XPath][Compréhension] noeud courant
Bonjour à tous,
Je veux tout simplement extraire une partie d'un fichier xml.
J'ai eu beau lire le cours de Erwan Lamoureux sur le noeud courant j'ai dû mal à comprendre dans le cas précis qui suit :
Voilà la feuille de style :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp " ">
<!ENTITY copy "©">
<!ENTITY reg "®">
<!ENTITY trade "">
<!ENTITY mdash "">
<!ENTITY ldquo "">
<!ENTITY rdquo "">
<!ENTITY pound "£">
<!ENTITY yen "¥">
<!ENTITY euro "">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" version="1.0" standalone="yes" omit-xml-declaration="no"/>
<xsl:template match="/">
<xsl:comment>Fichier XML servant à l'importation des listes de villes par département dans Web QFQDMV et fichiers_qfqdmv pour FileMaker Pro </xsl:comment>
<xsl:comment>Fichier XML servant à élaborer liste de villes pour la création d'encarts en version web du Back Office </xsl:comment>
</xsl:template>
<xsl:template match="/quifaitqqfqdmv">
<xsl:apply-templates select="self::quifaitqqfqdmv/child::Départements_child_villes">
<xsl:sort data-type="number" select="child::IdVille" order="ascending"/>
</xsl:apply-templates>
<xsl:value-of select="current()"/>
</xsl:template>
<xsl:template match="/quifaitqqfqdmv/child::Départements_child_villes">
<xsl:copy-of select="child::IdVille"/>
<xsl:copy-of select="child::IdDépartement"/>
<xsl:copy-of select="child::code_postal_ville"/>
<xsl:copy-of select="child::nom_ville"/>
</xsl:template>
</xsl:stylesheet> |
et la structure du xml d'entrée :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<?xml .... ?>
<quifaitqqfqdmv>
<....></....>
<Départements_child_villes>
<IdVille></IdVille>
<IdDépartement></IdDépartement>
<code_postal_ville></code_postal_ville>
<nom_ville></nom_ville>
</Départements_child_villes>
</quifaitqqfqdmv> |
Si je reprends ce que j'ai compris du comportement du processeur :
Le noeud courant au départ est le noeud racine, puis la déclaration xml, etc..., enfin l'élément quifaitqqfqdmv. Là application du premier template "/quifaitqqfqdmv", appel du template
Code:
"/quifaitqqfqdmv/child::Départements_child_villes"
, déplacement du noeud courant vers chaque noeud Départements_child_villes de la liste résultat. Les chemins xpath "child::IdVille", etc... devraient donc être valides.
Or, je n'ai rien que la sortie du template "/".
Désolé pour ce post un peu long, mais les débuts sont difficiles...:cry:
A plus,
Fred
[Débutant][XPATH]noeud courant
Salut,
pour l'histoire du
Code:
1 2
|
<xsl:apply-templates/> |
dans l'élément racine j'ai essayé et ça ne change rien. Sauf si le processeur s'arrête sur une erreur, il devrait continuer sa recherche dans l'arborescence.
En fait, je veux appliquer un modêle à 4 des 5 sous-éléments de /quifaitqfqdmv/child::Départements_child_villes :
Code:
1 2 3 4
| <xsl:copy-of select="child::IdVille"/>
<xsl:copy-of select="child::IdDépartement"/>
<xsl:copy-of select="child::code_postal_ville"/>
<xsl:copy-of select="child::nom_ville"/> |
Le test de "parentalité" n'est pas nécessaire puisque tous sont enfants de quifaitqfqdmv.
Est ce que ça serait pas plutôt une histoire de liste et d'itérations. Le XPATH as t'il besoin de retourner une liste de noeuds pour un
Code:
<xsl:template match="...">
?
Tel que je l'ai compris non...?
Merci pour ta réponse et à bientôt,
Fred