IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

parser fichier XML après conversion Pdf


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Points : 4
    Points
    4
    Par défaut parser fichier XML après conversion Pdf
    bonjour à tous,
    j' ai utilisé PdftoHtml sur un fichier Pdf et j'obtiens notamment le contenu suivant dans le XML :

    <page number="63" position="absolute" top="0" left="0" height="1263" width="892">
    <fontspec id="48" size="7" family="Times" color="#000000"/>
    <text top="84" left="106" width="229" height="15" font="43"><i>To accompany Notice to Mariners 542/11</i></text>
    <text top="130" left="106" width="85" height="15" font="43"><i>On Chart 2814</i></text>
    <text top="195" left="383" width="129" height="12" font="48"><b>CHANNEL DEPTHS (see Note) </b></text>
    <text top="209" left="407" width="81" height="12" font="48"><b>ELIZABETH RIVER </b></text>
    <text top="221" left="260" width="376" height="12" font="48"><b>TABULATED FROM SURVEYS BY THE CORPS OF ENGINEERS - SURVEYS TO APR 2010 </b></text>
    <text top="235" left="182" width="389" height="12" font="48"><b>CONTROLLING DEPTHS FROM SEAWARD IN FEET AT MEAN LOWER LOW WATER (MLLW) </b></text>
    <text top="235" left="639" width="103" height="12" font="48"><b>PROJECT DIMENSIONS </b></text>
    <text top="262" left="182" width="89" height="12" font="48"><b>NAME OF CHANNEL </b></text>
    <text top="249" left="332" width="25" height="12" font="48"><b>LEFT </b></text>
    <text top="262" left="323" width="42" height="12" font="48"><b>OUTSIDE </b></text>
    <text top="274" left="321" width="46" height="12" font="48"><b>QUARTER </b></text>
    <text top="249" left="384" width="25" height="12" font="48"><b>LEFT </b></text>
    <text top="262" left="380" width="32" height="12" font="48"><b>INSIDE </b></text>
    <text top="274" left="373" width="44" height="12" font="48"><b>QUARTER</b></text>
    <text top="249" left="433" width="30" height="12" font="48"><b>RIGHT </b></text>
    <text top="262" left="432" width="32" height="12" font="48"><b>INSIDE </b></text>
    <text top="274" left="425" width="44" height="12" font="48"><b>QUARTER</b></text>
    <text top="249" left="485" width="30" height="12" font="48"><b>RIGHT </b></text>
    <text top="262" left="479" width="42" height="12" font="48"><b>OUTSIDE </b></text>
    <text top="274" left="477" width="44" height="12" font="48"><b>QUARTER</b></text>
    <text top="262" left="533" width="80" height="12" font="48"><b>DATE OF SURVEY </b></text>
    <text top="255" left="627" width="32" height="12" font="48"><b>WIDTH </b></text>
    <text top="268" left="627" width="31" height="12" font="48"><b>(FEET) </b></text>
    <text top="249" left="672" width="39" height="12" font="48"><b>LENGTH </b></text>
    <text top="262" left="676" width="32" height="12" font="48"><b>(NAUT. </b></text>
    <text top="274" left="676" width="32" height="12" font="48"><b>MILES) </b></text>
    <text top="249" left="724" width="33" height="12" font="48"><b>DEPTH </b></text>
    <text top="262" left="725" width="29" height="12" font="48"><b>MLLW </b></text>
    <text top="274" left="724" width="31" height="12" font="48"><b>(FEET) </b></text>
    <text top="288" left="136" width="121" height="12" font="48"><b>NORFOLK HARBOR REACH </b></text>
    <text top="288" left="334" width="20" height="12" font="48"><b>49.4 </b></text>
    <text top="288" left="386" width="20" height="12" font="48"><b>49.5 </b></text>
    <text top="288" left="438" width="20" height="12" font="48"><b>49.6 </b></text>
    <text top="288" left="490" width="20" height="12" font="48"><b>47.2 </b></text>
    <text top="288" left="548" width="50" height="12" font="48"><b>10,11,12-09 </b></text>
    <text top="288" left="622" width="40" height="12" font="48"><b>1250-800 </b></text>
    <text top="288" left="684" width="15" height="12" font="48"><b>3.8 </b></text>
    <text top="288" left="734" width="12" height="12" font="48"><b>55 </b></text>
    <text top="301" left="136" width="108" height="12" font="48"><b>CRANEY ISLAND REACH </b></text>
    <text top="301" left="334" width="20" height="12" font="48"><b>48.9 </b></text>
    <text top="301" left="386" width="20" height="12" font="48"><b>48.5 </b></text>
    <text top="301" left="438" width="20" height="12" font="48"><b>49.9 </b></text>
    <text top="301" left="490" width="20" height="12" font="48"><b>49.0 </b></text>
    <text top="301" left="548" width="50" height="12" font="48"><b>10,11,12-09 </b></text>
    <text top="301" left="634" width="17" height="12" font="48"><b>800 </b></text>
    <text top="301" left="684" width="15" height="12" font="48"><b>2.1 </b></text>
    <text top="301" left="734" width="12" height="12" font="48"><b>55 </b></text>
    <text top="313" left="136" width="73" height="12" font="48"><b>LAMBERT BEND </b></text>
    <text top="313" left="334" width="20" height="12" font="48"><b>43.0 </b></text>
    <text top="313" left="387" width="20" height="12" font="48"><b>43.0 </b></text>
    <text top="313" left="438" width="20" height="12" font="48"><b>43.0 </b></text>
    <text top="313" left="490" width="20" height="12" font="48"><b>41.6 </b></text>
    <text top="313" left="563" width="20" height="12" font="48"><b>1-10 </b></text>
    <text top="313" left="634" width="17" height="12" font="48"><b>750 </b></text>
    <text top="313" left="684" width="15" height="12" font="48"><b>0.3 </b></text>
    <text top="313" left="734" width="12" height="12" font="48"><b>45 </b></text>
    <text top="326" left="136" width="154" height="12" font="48"><b>LAMBERT BEND TO PINNER POINT </b></text>
    <text top="326" left="335" width="20" height="12" font="48"><b>42.6 </b></text>
    <text top="326" left="387" width="20" height="12" font="48"><b>43.0 </b></text>
    <text top="326" left="438" width="20" height="12" font="48"><b>43.0 </b></text>
    <text top="326" left="490" width="20" height="12" font="48"><b>40.4 </b></text>
    <text top="326" left="563" width="20" height="12" font="48"><b>1-10 </b></text>
    <text top="326" left="634" width="17" height="12" font="48"><b>750 </b></text>
    <text top="326" left="684" width="15" height="12" font="48"><b>1.0 </b></text>
    <text top="326" left="734" width="12" height="12" font="48"><b>45 </b></text>
    <text top="338" left="136" width="173" height="12" font="48"><b>PINNER POINT TO TOWN POINT REACH </b></text>
    <text top="338" left="335" width="20" height="12" font="48"><b>37.2 </b></text>
    <text top="338" left="387" width="20" height="12" font="48"><b>40.0 </b></text>
    <text top="338" left="438" width="20" height="12" font="48"><b>40.0 </b></text>
    <text top="338" left="490" width="20" height="12" font="48"><b>39.2 </b></text>
    <text top="338" left="563" width="20" height="12" font="48"><b>1-10 </b></text>
    <text top="338" left="634" width="17" height="12" font="48"><b>750 </b></text>
    <text top="338" left="685" width="15" height="12" font="48"><b>1.0 </b></text>
    <text top="338" left="734" width="12" height="12" font="48"><b>45 </b></text>
    <text top="351" left="136" width="93" height="12" font="48"><b>TOWN POINT REACH </b></text>
    <text top="351" left="334" width="20" height="12" font="48"><b>37.9 </b></text>
    <text top="351" left="387" width="20" height="12" font="48"><b>39.0 </b></text>
    <text top="351" left="438" width="20" height="12" font="48"><b>39.7 </b></text>
    <text top="351" left="490" width="20" height="12" font="48"><b>37.9 </b></text>
    <text top="351" left="563" width="20" height="12" font="48"><b>1-10 </b></text>
    <text top="351" left="634" width="17" height="12" font="48"><b>750 </b></text>
    <text top="351" left="684" width="15" height="12" font="48"><b>0.6 </b></text>
    <text top="351" left="734" width="12" height="12" font="48"><b>45 </b></text>
    <text top="364" left="136" width="93" height="12" font="48"><b>SOUTHERN BRANCH </b></text>
    <text top="364" left="343" width="3" height="12" font="48"><b> </b></text>
    <text top="364" left="395" width="3" height="12" font="48"><b> </b></text>
    <text top="364" left="447" width="3" height="12" font="48"><b> </b></text>
    <text top="364" left="499" width="3" height="12" font="48"><b> </b></text>
    <text top="364" left="572" width="3" height="12" font="48"><b> </b></text>
    <text top="364" left="641" width="3" height="12" font="48"><b> </b></text>
    <text top="364" left="691" width="3" height="12" font="48"><b> </b></text>
    <text top="364" left="739" width="3" height="12" font="48"><b> </b></text>
    <text top="376" left="136" width="77" height="12" font="48"><b> LOWER REACH </b></text>
    <text top="376" left="334" width="20" height="12" font="48"><b>37.7 </b></text>
    <text top="376" left="386" width="20" height="12" font="48"><b>39.2 </b></text>
    <text top="376" left="438" width="20" height="12" font="48"><b>39.4 </b></text>
    <text top="376" left="490" width="20" height="12" font="48"><b>35.9 </b></text>
    <text top="376" left="563" width="20" height="12" font="48"><b>1-10 </b></text>
    <text top="376" left="625" width="35" height="12" font="48"><b>450-800 </b></text>
    <text top="376" left="684" width="15" height="12" font="48"><b>1.7 </b></text>
    <text top="376" left="734" width="12" height="12" font="48"><b>45 </b></text>
    <text top="389" left="136" width="77" height="12" font="48"><b> MIDDLE REACH </b></text>
    <text top="401" left="136" width="171" height="12" font="48"><b> N &amp; W RAILWAY LIFT BRIDGE REACH </b></text>
    <text top="414" left="136" width="136" height="12" font="48"><b> GILMERTON BRIDGE REACH </b></text>
    <text top="427" left="136" width="165" height="12" font="48"><b>ST. JULIANS CREEK TURNING BASIN </b></text>
    <text top="439" left="136" width="177" height="12" font="48"><b>GILMERTON BRIDGE REACH TO END OF </b></text>
    <text top="452" left="136" width="150" height="12" font="48"><b>NEWTON CREEK TURNING BASIN </b></text>
    <text top="464" left="136" width="153" height="12" font="48"><b>LEFT AND RIGHT WIDENERS ONLY </b></text>
    <text top="477" left="136" width="154" height="12" font="48"><b>END OF NEWTON CREEK TURNING </b></text>
    <text top="490" left="136" width="122" height="12" font="48"><b>BASIN TO UPSTREAM LIMIT </b></text>
    <text top="502" left="136" width="3" height="12" font="0"> </text>
    <text top="389" left="334" width="20" height="12" font="48"><b>33.5 </b></text>
    <text top="401" left="334" width="20" height="12" font="48"><b>36.4 </b></text>
    <text top="414" left="334" width="20" height="12" font="48"><b>35.3 </b></text>
    <text top="427" left="343" width="3" height="12" font="48"><b> </b></text>
    <text top="439" left="343" width="3" height="12" font="48"><b> </b></text>
    <text top="452" left="334" width="20" height="12" font="48"><b>34.5 </b></text>
    <text top="464" left="334" width="20" height="12" font="48"><b>35.2 </b></text>
    <text top="477" left="343" width="3" height="12" font="48"><b> </b></text>
    <text top="490" left="334" width="20" height="12" font="48"><b>27.0 </b></text>
    <text top="502" left="320" width="3" height="12" font="0"> </text>
    <text top="389" left="386" width="20" height="12" font="48"><b>39.7 </b></text>
    <text top="401" left="386" width="20" height="12" font="48"><b>35.8 </b></text>
    <text top="414" left="386" width="20" height="12" font="48"><b>35.5 </b></text>
    <text top="427" left="386" width="20" height="12" font="48"><b>37.1 </b></text>
    <text top="439" left="395" width="3" height="12" font="48"><b> </b></text>
    <text top="452" left="386" width="20" height="12" font="48"><b>34.9 </b></text>
    <text top="464" left="395" width="3" height="12" font="48"><b> </b></text>
    <text top="477" left="395" width="3" height="12" font="48"><b> </b></text>
    <text top="490" left="386" width="20" height="12" font="48"><b>27.2 </b></text>
    <text top="389" left="438" width="20" height="12" font="48"><b>40.0 </b></text>
    <text top="401" left="438" width="20" height="12" font="48"><b>35.8 </b></text>
    <text top="414" left="438" width="20" height="12" font="48"><b>35.5 </b></text>
    <text top="427" left="438" width="20" height="12" font="48"><b>37.1 </b></text>
    <text top="439" left="447" width="3" height="12" font="48"><b> </b></text>
    <text top="452" left="438" width="20" height="12" font="48"><b>34.9 </b></text>
    <text top="464" left="447" width="3" height="12" font="48"><b> </b></text>
    <text top="477" left="447" width="3" height="12" font="48"><b> </b></text>
    <text top="490" left="438" width="20" height="12" font="48"><b>27.2 </b></text>
    <text top="502" left="447" width="3" height="12" font="48"><b> </b></text>
    <text top="389" left="490" width="20" height="12" font="48"><b>34.4 </b></text>
    <text top="401" left="490" width="20" height="12" font="48"><b>34.0 </b></text>
    <text top="414" left="490" width="20" height="12" font="48"><b>34.6 </b></text>
    <text top="427" left="499" width="3" height="12" font="48"><b> </b></text>
    <text top="439" left="499" width="3" height="12" font="48"><b> </b></text>
    <text top="452" left="490" width="20" height="12" font="48"><b>34.8 </b></text>
    <text top="464" left="490" width="20" height="12" font="48"><b>35.2 </b></text>
    <text top="477" left="499" width="3" height="12" font="48"><b> </b></text>
    <text top="490" left="490" width="20" height="12" font="48"><b>25.7 </b></text>
    <text top="389" left="563" width="20" height="12" font="48"><b>1-10 </b></text>
    <text top="401" left="563" width="20" height="12" font="48"><b>2-08 </b></text>
    <text top="414" left="563" width="20" height="12" font="48"><b>2-08 </b></text>
    <text top="427" left="563" width="20" height="12" font="48"><b>2-08 </b></text>
    <text top="439" left="572" width="3" height="12" font="48"><b> </b></text>
    <text top="452" left="563" width="20" height="12" font="48"><b>2-08 </b></text>
    <text top="464" left="563" width="20" height="12" font="48"><b>2-08 </b></text>
    <text top="477" left="572" width="3" height="12" font="48"><b> </b></text>
    <text top="490" left="563" width="20" height="12" font="48"><b>2-08 </b></text>
    <text top="389" left="634" width="17" height="12" font="48"><b>375 </b></text>
    <text top="401" left="625" width="35" height="12" font="48"><b>200-500 </b></text>
    <text top="414" left="625" width="35" height="12" font="48"><b>250-500 </b></text>
    <text top="427" left="634" width="17" height="12" font="48"><b>150 </b></text>
    <text top="439" left="641" width="3" height="12" font="48"><b> </b></text>
    <text top="452" left="634" width="17" height="12" font="48"><b>300 </b></text>
    <text top="464" left="634" width="17" height="12" font="48"><b>175 </b></text>
    <text top="477" left="641" width="3" height="12" font="48"><b> </b></text>
    <text top="490" left="634" width="17" height="12" font="48"><b>250 </b></text>
    <text top="389" left="684" width="15" height="12" font="48"><b>0.9 </b></text>
    <text top="401" left="684" width="15" height="12" font="48"><b>0.2 </b></text>
    <text top="414" left="684" width="15" height="12" font="48"><b>2.1 </b></text>
    <text top="427" left="684" width="15" height="12" font="48"><b>0.1 </b></text>
    <text top="439" left="691" width="3" height="12" font="48"><b> </b></text>
    <text top="452" left="684" width="15" height="12" font="48"><b>0.4 </b></text>
    <text top="464" left="684" width="15" height="12" font="48"><b>0.1 </b></text>
    <text top="477" left="691" width="3" height="12" font="48"><b> </b></text>
    <text top="490" left="684" width="15" height="12" font="48"><b>1.3 </b></text>
    <text top="389" left="734" width="12" height="12" font="48"><b>45 </b></text>
    <text top="401" left="734" width="12" height="12" font="48"><b>35 </b></text>
    <text top="414" left="734" width="12" height="12" font="48"><b>35 </b></text>
    <text top="427" left="734" width="12" height="12" font="48"><b>35 </b></text>
    <text top="439" left="739" width="3" height="12" font="48"><b> </b></text>
    <text top="452" left="734" width="12" height="12" font="48"><b>35 </b></text>
    <text top="464" left="734" width="12" height="12" font="48"><b>35 </b></text>
    <text top="477" left="739" width="3" height="12" font="48"><b> </b></text>
    <text top="490" left="734" width="12" height="12" font="48"><b>35 </b></text>
    <text top="502" left="720" width="3" height="12" font="48"><b> </b></text>
    <text top="516" left="136" width="466" height="12" font="48"><b>NOTE - CONSULT THE CORPS OF ENGINEERS FOR CHANGES SUBSEQUENT TO THE ABOVE INFORMATION </b></text>
    <text top="529" left="108" width="3" height="18" font="30"><i> </i></text>
    <text top="1204" left="733" width="53" height="12" font="18">Wk06/11</text>
    </page>

    après qques modifs dans le XML, je souhaite via une feuille XSL, le convertir en HTML

    problème :

    je n'arrive pas à afficher convenablement le contenu de la balise <page>
    faut il passer par un tableau ?
    j'ai la position de chaque cellule via les attributs dans la balise <text> mais je sèche...
    merci d'avance

  2. #2
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut
    Bonjour,

    tu peux passer par la structure que tu veux : tableau, liste, ...
    Article : Installation de Cocoon
    Je ne réponds pas aux MP à caractère technique.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    je suis passé par un tableau mais le résultat n'est pas bon :
    j'ai plein de doublons

    dans ma feuille, j' ai codé :

    <xsl:template match="page">
    <table>
    <xsl:apply-templates select="text"/>
    </table>
    </xsl:template>

    <xsl:template match="text">
    <xsl:param name="start" select="@top" />
    <tr>
    <xsl:for-each select ="../text">
    <xsl:if test="@top=$start">
    <td top="@top" left="@left" width="@width" height="@height"><xsl:value-of select= "." /> </td>
    </xsl:if>
    </xsl:for-each>
    </tr>
    </xsl:template>

  4. #4
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut
    La règle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <xsl:template match="text">
    <xsl:param name="start" select="@top" />
    <tr>
    <xsl:for-each select ="../text">
    <xsl:if test="@top=$start">
    <td top="@top" left="@left" width="@width" height="@height"><xsl:value-of select= "." /> </td>
    </xsl:if>
    </xsl:for-each>
    </tr>
    </xsl:template>
    s'applique aux éléments de type text,
    aussi dans cette même règle, tu utilise une boucle for-each qui s'applique à l'ensemble de noeuds que tu sélectionne ../text, à savoir tous les éléments de type text fils du noeud parent page, donc tu obtient plein de doublons.
    Ceci devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <xsl:template match="text">
    <xsl:param name="start" select="@top" />
    <tr>
    <xsl:if test="@top=$start">
    <td top="@top" left="@left" width="@width" height="@height">
    <xsl:value-of select= "." /> 
    </td>
    </xsl:if>
    </tr>
    </xsl:template>
    Note : tu devrais aussi utiliser la structure conditionnelle xsl:choose pour le cas où l'attribut @top!=$start puisse qu'en HTML l'élément tr doit avoir un fils.
    Article : Installation de Cocoon
    Je ne réponds pas aux MP à caractère technique.

Discussions similaires

  1. [DOM] probleme de fermeture de fichier xml apres modification
    Par bibi73 dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 08/04/2008, 16h13
  2. [glib] parser fichier xml
    Par .:dev:. dans le forum C
    Réponses: 10
    Dernier message: 18/07/2006, 00h00
  3. [DOM] Erreur parser fichier xml avec caractère spéciaux
    Par turcotm dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 19/06/2006, 09h01
  4. [XML] [EXPAT] Parser fichier XML
    Par Ben42 dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 17/02/2006, 14h08
  5. [XSL] Parser fichier xml : erreurs + incompréhensions
    Par totobouchon dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 19/07/2005, 15h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo