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 :

[XSL] ouverture fermeture de balise


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut [XSL] ouverture fermeture de balise
    bonjour,

    je suis débutant en xsl/xml et je voudr savoir comment ouvrir une balise <svg> par exemple, lui incorporée plusieurs règles puis refermer la balise </svg>
    En fait mes règles doivent produire du code XML/SVG mais je n'arrive a faire "fonctionner qu'une seule règle" et jamais les deux a la fois !!

    voici mon 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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:template match="batiments_classes"> 
       <xsl:for-each select="batiment">
       	<xsl:element name="polyline"> 
          	<xsl:attribute name="points"> 
             	<xsl:for-each select="liste_coord/coord"> 
                	<xsl:value-of select="x"/><xsl:text>, </xsl:text>
    	    	<xsl:value-of select="y"/> 
                	<xsl:if test="following-sibling::coord"> 
                   		<xsl:text>, </xsl:text> 
                	</xsl:if> 
             	</xsl:for-each> 
          	</xsl:attribute> 
          	<xsl:attribute name="stroke">red</xsl:attribute> 
          	<xsl:attribute name="fill">yellow</xsl:attribute> 
       	</xsl:element> 
       </xsl:for-each> 
    </xsl:template>
     
    <xsl:template match="routes_classes"> 
       <xsl:for-each select="route">
       	<xsl:element name="polyline"> 
          	<xsl:attribute name="points"> 
             	<xsl:for-each select="liste_coord/coord"> 
                	<xsl:value-of select="x"/><xsl:text>, </xsl:text>
    	    	<xsl:value-of select="y"/> 
                	<xsl:if test="following-sibling::coord"> 
                   		<xsl:text>, </xsl:text> 
                	</xsl:if> 
             	</xsl:for-each> 
          	</xsl:attribute> 
          	<xsl:attribute name="stroke">black</xsl:attribute> 
          	<xsl:attribute name="fill">black</xsl:attribute> 
       	</xsl:element> 
       </xsl:for-each> 
    </xsl:template>
     
    </xsl:stylesheet>
    j'ai essayé pas mal de posibilitées mais la je sèche.....
    (J'ai retiré mes balises d'ouverture et fermeture <svg>)

  2. #2
    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,

    en nous donnant le XML d'origine, et le code SVG attendu en retour, on pourra t'aider à écrire le XSL intermédiaire...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    Finalement en cherchant encore un bon bout de temps après mon poste, j'ai réussi à trouver une solution, mais bon j'aimerai savoir s'il n'y a pas manière de faire plus élégant !!!

    voici le xml :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="TestSVG1.xsl"?>
    <themes_list>
        <accidents_classes>
            <accident id="0" lieu="Trou" localisation="0" nb_personnes="3">
                <liste_coord type="P">
                    <coord>
                        <x>225</x>
                        <y>200</y>
                    </coord>
                    <coord>
                        <x>250</x>
                        <y>175</y>
                    </coord>
                    <coord>
                        <x>275</x>
                        <y>175</y>
                    </coord>
                    <coord>
                        <x>300</x>
                        <y>200</y>
                    </coord>
                    <coord>
                        <x>275</x>
                        <y>225</y>
                    </coord>
                    <coord>
                        <x>250</x>
                        <y>225</y>
                    </coord>
                    <coord>
                        <x>225</x>
                        <y>200</y>
                    </coord>
                </liste_coord>
            </accident>
        </accidents_classes>
        <batiments_classes>
            <batiment couleur="5" cp="92090" id="0"
                type_construction="Public" ville="0">
                <liste_coord type="L">
                    <coord>
                        <x>325</x>
                        <y>325</y>
                    </coord>
                    <coord>
                        <x>375</x>
                        <y>325</y>
                    </coord>
                    <coord>
                        <x>375</x>
                        <y>375</y>
                    </coord>
                    <coord>
                        <x>325</x>
                        <y>375</y>
                    </coord>
                    <coord>
                        <x>325</x>
                        <y>325</y>
                    </coord>
                </liste_coord>
            </batiment>
        </batiments_classes>
        <routes_classes>
            <route debit="1" distance="0" id="0" type_route="Route">
                <liste_coord type="L">
                    <coord>
                        <x>400</x>
                        <y>100</y>
                    </coord>
                    <coord>
                        <x>450</x>
                        <y>100</y>
                    </coord>
                    <coord>
                        <x>450</x>
                        <y>750</y>
                    </coord>
                    <coord>
                        <x>400</x>
                        <y>750</y>
                    </coord>
                    <coord>
                        <x>400</x>
                        <y>100</y>
                    </coord>
                </liste_coord>
            </route>
            <route debit="8" distance="1" id="1" type_route="Chemin">
                <liste_coord type="L">
                    <coord>
                        <x>100</x>
                        <y>400</y>
                    </coord>
                    <coord>
                        <x>750</x>
                        <y>400</y>
                    </coord>
                    <coord>
                        <x>750</x>
                        <y>450</y>
                    </coord>
                    <coord>
                        <x>100</x>
                        <y>450</y>
                    </coord>
                    <coord>
                        <x>100</x>
                        <y>400</y>
                    </coord>
                </liste_coord>
            </route>
        </routes_classes>
    </themes_list>
    le but est donc de tracer les batiments, routes et accidents avec des polylines à l'aide de SVG.

    voici ma solution XSL/SVG surement un peu barbare et bourrine......

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:template match="themes_list">
    <svg xmlns="http://www.w3.org/2000/svg">
     
    	<xsl:for-each select="accidents_classes"> 
       		<xsl:for-each select="accident">
       			<xsl:element name="polyline"> 
          			<xsl:attribute name="points"> 
             		<xsl:for-each select="liste_coord/coord"> 
                			<xsl:value-of select="x"/><xsl:text>, </xsl:text>
    	    			<xsl:value-of select="y"/> 
                			<xsl:if test="following-sibling::coord"> 
                   			<xsl:text>, </xsl:text> 
                			</xsl:if> 
             		</xsl:for-each> 
          			</xsl:attribute> 
          			<xsl:attribute name="stroke">blue</xsl:attribute> 
          			<xsl:attribute name="fill">blue</xsl:attribute> 
       			</xsl:element> 
       		</xsl:for-each> 
       	</xsl:for-each>
     
    	<xsl:for-each select="batiments_classes">
    		<xsl:for-each select="batiment">
    			<xsl:element name="polyline"> 
          	 		<xsl:attribute name="points"> 
                		<xsl:for-each select="liste_coord/coord"> 
                			<xsl:value-of select="x"/><xsl:text>, </xsl:text>
    	    			<xsl:value-of select="y"/> 
                			<xsl:if test="following-sibling::coord"> 
                   			<xsl:text>, </xsl:text> 
                			</xsl:if> 
             		</xsl:for-each> 
          			</xsl:attribute> 
          			<xsl:attribute name="stroke">red</xsl:attribute> 
          			<xsl:attribute name="fill">yellow</xsl:attribute> 
       			</xsl:element> 
       		</xsl:for-each>
       	</xsl:for-each> 
     
    	<xsl:for-each select="routes_classes"> 
       		<xsl:for-each select="route">
       			<xsl:element name="polyline"> 
          			<xsl:attribute name="points"> 
             		<xsl:for-each select="liste_coord/coord"> 
                			<xsl:value-of select="x"/><xsl:text>, </xsl:text>
    	    			<xsl:value-of select="y"/> 
                			<xsl:if test="following-sibling::coord"> 
                   			<xsl:text>, </xsl:text> 
                			</xsl:if> 
             		</xsl:for-each> 
          			</xsl:attribute> 
          			<xsl:attribute name="stroke">green</xsl:attribute> 
          			<xsl:attribute name="fill">green</xsl:attribute> 
       			</xsl:element> 
       		</xsl:for-each> 
       	</xsl:for-each>
     
    </svg>
    </xsl:template>
     
    </xsl:stylesheet>
    Donc le pblm que j'avais hier était de savoir comment faire pour scinder le tout en plusieurs règles au lieu de maintenant une seule, car je pense que plusieurs permettrais d'avoir quelques chose de plus souple et flexible....
    J'arrivais à faire fonctionner une règle mais jamais plusieurs à la fois.....

    J'espère avoir été clair dans ma tentative de demande d'explication cette fois ci

    Merci d'avance !!

Discussions similaires

  1. innerHTML : fermeture de balise automatique ??
    Par pekka77 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 17/11/2005, 17h51
  2. [C#] La bonne utilisation des WinForms (ouverture-Fermeture)
    Par Harry dans le forum Windows Forms
    Réponses: 28
    Dernier message: 03/08/2005, 11h39
  3. Problème de fermeture de balise <tr>
    Par nuage dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 18/03/2004, 09h55
  4. [XSL][re] Ecrire des balise qui ne seront pas interpretées
    Par FrRoulio dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/03/2004, 12h32
  5. generer xsl depuis xml avec balises inconues ?
    Par cedre dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 24/06/2003, 09h00

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