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

XML/XSL et SOAP Discussion :

* et @ en XML


Sujet :

XML/XSL et SOAP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 14
    Points : 18
    Points
    18
    Par défaut * et @ en XML
    Bonjour
    Alors j'ai trouvé ce fichier xslt qui fait la transformation de XML en JSON et je voulais le comprendre un peu si vous pouvez m'aider ça me ferai plaisir
    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
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="text"/>
     
        <xsl:template match="/">{
            <xsl:apply-templates select="*"/>}
        </xsl:template>
     
        <!-- Object or Element Property-->
        <xsl:template match="*">
            "<xsl:value-of select="name()"/>" : <xsl:call-template name="Properties"/>
        </xsl:template>
     
        <!-- Array Element -->
        <xsl:template match="*" mode="ArrayElement">
            <xsl:call-template name="Properties"/>
        </xsl:template>
     
        <!-- Object Properties -->
        <xsl:template name="Properties">
            <xsl:variable name="childName" select="name(*[1])"/>
            <xsl:choose>
                <xsl:when test="not(*|@*)">"<xsl:value-of select="."/>"</xsl:when>
                <xsl:when test="count(*[name()=$childName]) > 1">{ "<xsl:value-of select="$childName"/>" :[<xsl:apply-templates select="*" mode="ArrayElement"/>] }</xsl:when>
                <xsl:otherwise>{
                    <xsl:apply-templates select="@*"/>
                    <xsl:apply-templates select="*"/>
        }</xsl:otherwise>
            </xsl:choose>
            <xsl:if test="following-sibling::*">,</xsl:if>
        </xsl:template>
     
        <!-- Attribute Property -->
        <xsl:template match="@*">"<xsl:value-of select="name()"/>" : "<xsl:value-of select="."/>",
        </xsl:template>
    </xsl:stylesheet>
    Alors avant tout l'étoile (*) je pense que c'est ce qui suit la racine du fichier XML mais lorsque c'est comme ça not(*|@*) ou name(*[1]) ou @* qu'est ce que ça signifie ??? s'il vous plaît si vous pouvez m'expliquer ou me donner une piste où je pourrai comprendre j'ai cherché mais j'ai rien trouver donc je vous viens en aide

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    l'étoile toute seule * ça veut dire "n'importe quel élément." Donc <xsl:template match="*"> c'est un template qui s'applique sur tous les éléments. Comme le template sur <Properties> est plus précis, il s'applique en priorité quand on tombe sur un élément <Properties> au lieu de laisser s'appliquer celui sur *

    L'arobe suivi d'étoile @* ça veut dire "n'importe quel attribut." Donc <xsl:template match="@*"> c'est un template qui s'applique sur les attributs.

    <xsl:apply-templates select="*"/> ça veut dire "appliquer les templates à tous les enfants qui sont des éléments". (En gros, appliquer les templates aux enfants, mais s'il y a du texte entre les éléments, ne pas en tenir compte.)

    *[1] ça veut dire "tous les éléments, puis ne garder que le premier." Bon bref, prendre le premier élément donc.

    Donc name(*[1]) ça veut dire "le nom du premier élément." Enfin, en réalité le [1] n'était pas utile, name() n'aurait gardé que le premier de toute façon.

    not(*|@*) ça veut dire "qui ne trouve rien quand on lui demande de sélectionner *|@*". Autrement dit, "qui ne trouve rien quand on lui demande de sélectionner * et rien quand on lui demande de sélectionner @*". Donc, qui ne trouve rien quand on regarde les éléments qu'il a et rien quand on regarde les attributs qu'il a. Bon bref, ça veut dire, "qui ne contient ni élément, ni attribut". Utile pour repérer un élément qui ne contient rien d'autre que du texte.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. xml -> xsl -> xml
    Par virgile04 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/10/2002, 16h53
  2. Balises HTML dans un fichier XML
    Par Bastet79 dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 04/09/2002, 15h29
  3. delphi XML / HTML caractéres speciaux !
    Par adem dans le forum EDI
    Réponses: 2
    Dernier message: 29/08/2002, 17h48
  4. Débutant XML
    Par viny dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 25/07/2002, 12h07
  5. Pas de casse dans les XML
    Par :GREG: dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 13h51

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