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 :

Replace (CarriageReturn,<BR />)


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre averti Avatar de The_Big_Lebowski
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 225
    Points : 304
    Points
    304
    Par défaut Replace (CarriageReturn,<BR />)
    Bonjour,
    Je stocke du texte formaté dans un noeud XML et j'aimerais transformer via un XSL les CR de mon texte par des balises <br /> ou des tabulations par &nbsp;
    je maîtrise le texte stocké dans ce noeud et il m'est tout à fait possible de rajouter une information qui me précise si je suis sur un CR ou une tab "(CR) et / ou (TAB)" par exemple.
    Je précise que je préfère éviter la balise <PRE>, en effet, celle-ci ne permet pas de calibrer l'affichage (resize du browser).
    Merci de m'aider ou m'orienter vers un lien qui me permettrait d'arriver à mes fins.
    Salut

  2. #2
    Membre actif Avatar de amadoulamine1
    Inscrit en
    Avril 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 260
    Points : 270
    Points
    270
    Par défaut
    salut
    S'il y avait un exemple de ce que tu veux faire ce serait mieux et plus claire (1 partie de ton fichier xml et 1 partie de ton xsl).
    D'après ce que j'ai pu comprendre
    a chaque fois que tu lis un CR tu veux écrire <BR/>
    un <xsl:text disable-output-escaping="yes"> &lt;BR/&gt;</xsl:text>
    Ne testez jamais une erreur que vous ne savez pas gérer.
    de ne pas oublier

  3. #3
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    Citation Envoyé par The_Big_Lebowski Voir le message
    je maîtrise le texte stocké dans ce noeud et il m'est tout à fait possible de rajouter une information qui me précise si je suis sur un CR ou une tab "(CR) et / ou (TAB)" par exemple.
    Si tu en as le contrôle, qu'est-ce qui t'empêche de placer directement tes &nbsp; et <br/> dans ton document XML ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  4. #4
    Membre averti Avatar de The_Big_Lebowski
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 225
    Points : 304
    Points
    304
    Par défaut
    exemple d'un noeud XML
    <corps>
    Le projet d'installation de chantier qui sera soumis à l'approbation du maître d'oeuvre comprendra :
    1°) Un plan au 1/200ème sur lequel seront reportés :
    * Les divers éléments constituant l'installation.
    * Voies de circulation, les emplacements des parkings et des zones de stockage.
    ...
    </corps>

    voila le texte en question qui est récupéré dans un controle texte avec une mise page, saut de ligne, tabulation
    je ne peux pas inserer de balise <br /> dans une balise xml, elle n'est pas interprétée
    en revanche, je peux tout a fait rajouter une info dans mon texte qui me permet de rappeler le saut de ligne ou la tabulation par exemple après "comprendra:" je place une info (CR) par exemple et demanderais à mon XSL de transformer (CR) en <BR />

    je ne peux pas donner d'exemple xsl puisque je ne sais pas le faire ,

  5. #5
    Membre actif Avatar de amadoulamine1
    Inscrit en
    Avril 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 260
    Points : 270
    Points
    270
    Par défaut
    puisque les (CR ) sont déja inclus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <xsl:stylesheet version='1.0' xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
       <xsl:output method="html" media-type="text/html" encoding="ISO-8859-1" doctype-public="-//W3C//DTD HTML 4.01//EN" doctype-system="http://www.w3.org/TR/html4/strict.dtd" indent="yes" />
    <xsl:template match="corps">
           <xsl:element name="html">
           	 <xsl:element name="body">
           		   <xsl:copy-of  select = "text()" />
        	</xsl:element>
          </xsl:element>
      </xsl:template>
      </xsl:stylesheet>
    normalement ta plus besoin de les interpreter vu qu'ils sont déja présent
    Ne testez jamais une erreur que vous ne savez pas gérer.
    de ne pas oublier

  6. #6
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par The_Big_Lebowski Voir le message
    je ne peux pas inserer de balise <br /> dans une balise xml, elle n'est pas interprétée
    Si si, c'est gérable. Si tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <corps>
    Le projet d'installation de chantier qui sera soumis à l'approbation du maître d'oeuvre comprendra :<br/>1°) Un plan au 1/200ème sur lequel seront reportés :<br/>& nbsp;* Les divers éléments constituant l'installation.<br/>& nbsp;* Voies de circulation, les emplacements des parkings et des zones de stockage.
    ...<br/>
    </corps>
    Tu pourras retrouver tes &nbsp; et tes <br/> en sortie avec ces templates :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xsl:template match="corps">
      <xsl:apply-templates select="*|text()" />
    </xsl:template>
    <xsl:template match="corps/text()">
      <xsl:value-of select="." disable-output-escape="yes" />
    </xsl:template>
    <xsl:template match="corps/*">
      <xsl:copy-of select="." />
    </xsl:template>
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  7. #7
    Membre averti Avatar de The_Big_Lebowski
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 225
    Points : 304
    Points
    304
    Par défaut
    je n'ai pas bien compris,
    il y a 3 templates ou ce bout de code est a placer dans mon xsl
    j'ai beau essayé, j'ai une erreur qui stipule que le mot cle 'xsl.template' ne doit pas etre utilisé ici.
    la structure de mon fichier xml est la suivante :
    <!-- -->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    38
    39
    40
    41
    <?xml version="1.0" encoding="utf-16"?>
    <?xml-stylesheet type="text/xsl" href="c:\Dev\RAPT\Divers\document.xsl"?>
    <document>
      <paragraphe>
        <titre>Installation et repliement de chantier</titre>
        <corps>
          Le projet d'installation de chantier qui sera soumis à l'approbation du maître d'oeuvre comprendra :<br />
          1°) Un plan au 1/200ème sur lequel seront reportés :<br />
              *  Les divers éléments constituant l'installation.
              *  Voies de circulation, les emplacements des parkings et des zones de stockage.
          2°) Le plan détaillé d'implantation de locaux à usage de bureaux ainsi qu'un local pour le maître d'œuvre.
          Chaque plan fera apparaître les emplacements réservés aux sanitaires, aux douches, ainsi que les points de défense contre l'incendie (lances, extincteurs, bacs à sables, etc...).
          La mise à disposition des locaux devra intervenir dans un délai maximum de 1 mois après l'ordre de service de commencer les travaux.
        </corps>
        <tableau rows="4" cols="3">
          <cell row="1" col="1">row 1 col 1</cell>
          <cell row="1" col="2">row 1 col 2</cell>
          <cell row="1" col="3">row 1 col 3</cell>
          <cell row="1" col="3">row 1 col 4</cell>
          <cell row="2" col="1">row 2 col 1</cell>
          <cell row="2" col="2">row 2 col 2</cell>
          <cell row="2" col="3">row 2 col 3</cell>
          <cell row="2" col="4">row 2 col 4</cell>
          <cell row="3" col="1">row 3 col 1</cell>
          <cell row="3" col="2">row 3 col 2</cell>
          <cell row="3" col="3">row 3 col 3</cell>
          <cell row="3" col="4">row 3 col 4</cell>
          <cell row="4" col="1">row 4 col 1</cell>
          <cell row="4" col="2">row 4 col 2</cell>
          <cell row="4" col="3">row 4 col 3</cell>
          <cell row="4" col="4">row 4 col 4</cell>
        </tableau>
      </paragraphe>
      <paragraphe>
        <titre>Installation secondaire</titre>
        <corps>
          Ceci est un autre corps de texte
        </corps>
      </paragraphe>
    </document>
    <!-- -->
    mon xsl "document.xsl"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    38
    39
    40
    41
    42
    43
    44
    45
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="html" encoding="ISO-8859-1"/>
      <xsl:key match="//cell" use="@row" name="cells"/>
      <xsl:template match="document">
        <html>
          <head>
            <style>
              table {font-family:Verdana; border:solid 1px Navy;font-size:x-small}
              body {font-family:Verdana; font-size:x-small;}
              div {font-family:Verdana;}
              pre {font-family:Verdana; font-size:x-small;}
              trr {background-color:pink;}
            </style>
          </head>
          <body style="font-family:Verdana;">
            <xsl:for-each select="//paragraphe">
              <div style="color:navy">
                <xsl:apply-templates select="titre"/>
              </div>
              <div>
                <xsl:apply-templates select="corps"/>
              </div>
              <xsl:for-each select="tableau">
                <table>
                  <xsl:for-each select="//cell[generate-id()=generate-id(key('cells',@row))]">
                    <xsl:variable name="row" select="@row"/>
                    <tr>
                      <xsl:for-each select="//cell[@row=$row]">
                        <td>
                          <xsl:value-of select="text()"/>
                        </td>
                      </xsl:for-each>
                    </tr>
                  </xsl:for-each>
                </table>
              </xsl:for-each>
              <br />
            </xsl:for-each>
     
          </body>
        </html>
     
      </xsl:template>
    </xsl:stylesheet>

  8. #8
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Tous les <xsl:template> doivent être des éléments fils de <xsl:stylesheet>. Un simple copier-coller de ce que je t'ai donné au bon endroit devrait convenir...
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  9. #9
    Membre averti Avatar de The_Big_Lebowski
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 225
    Points : 304
    Points
    304
    Par défaut
    Citation Envoyé par GrandFather Voir le message
    Tous les <xsl:template> doivent être des éléments fils de <xsl:stylesheet>. Un simple copier-coller de ce que je t'ai donné au bon endroit devrait convenir...
    j'ai changé
    <div>
    <pre><xsl:apply-templates select="corps"/></pre>
    </div>
    par
    le code que tu m'as donné
    <xsl:template match="corps">
    <xsl:apply-templates select="*|text()" />
    </xsl:template>
    <xsl:template match="corps/text()">
    <xsl:value-of select="." disable-output-escape="yes" />
    </xsl:template>
    <xsl:template match="corps/*">
    <xsl:copy-of select="." />
    </xsl:template>
    et ca bug

Discussions similaires

  1. [ODBC] Fonction Replace en ODBC
    Par Alexandre T dans le forum Access
    Réponses: 4
    Dernier message: 10/01/2007, 11h02
  2. problème avec "replace"
    Par lilipuce83 dans le forum ASP
    Réponses: 3
    Dernier message: 26/05/2004, 16h42
  3. [C#] Methode Replace
    Par pc152 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 22/05/2004, 17h17
  4. Prob d'execution de REPLACE *** INTO
    Par Mystman dans le forum Langage SQL
    Réponses: 6
    Dernier message: 26/04/2004, 16h41
  5. Cherche Fonction du style replace...
    Par sdchamplas dans le forum Langage SQL
    Réponses: 4
    Dernier message: 31/03/2003, 13h54

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