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 :

Transformation XSLT : apply-templates manquant [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 122
    Points : 2 235
    Points
    2 235
    Par défaut Transformation XSLT : apply-templates manquant
    Bonjour tout le monde,

    Dans une feuille de style de transformation qui a cette allure :

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  <xsl:template match="/doc/members/member" />
      <xsl:template match="doc/members/member">
        <tr>
          <td>
            <xsl:value-of select="@name" />
          </td>
        </tr>
      </xsl:template>
      <HTML xmlns="http://schemas.microsoft.com/XML-Document-Transform">
        <HEAD>
        </HEAD>
        <BODY>
          <TABLE border="1">
            <xsl:apply-templates />
          </TABLE>
        </BODY>
      </HTML>
    </xsl:stylesheet>
    La balise <xsl:apply-templates> est soulignée en ondulé et pointe sur l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Severity	Code	Description	Project	File	Line	Suppression State
    Warning		The element 'stylesheet' in namespace 'http://www.w3.org/1999/XSL/Transform' has invalid child element 'apply-templates' in namespace 'http://www.w3.org/1999/XSL/Transform'. List of possible elements expected: 'include, strip-space, preserve-space, output, key, decimal-format, attribute-set, variable, param, template, namespace-alias' in namespace 'http://www.w3.org/1999/XSL/Transform' as well as any element in namespace '##other'.	MergeDoc	MergeDoc\docsheet.xslt	16
    La conformité de cette erreur avec la doc m'apparaît tout sauf évident.
    https://www.w3schools.com/xml/ref_xs...-templates.asp

    Quelqu'un peut-il me dépanner ?

  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,

    pour information, W3Schools n'est absolument pas une doc. C'est un truc à vocation de t'apprendre plus ou moins bien à utiliser les technologies, un peu trop souvent moins bien. Le seul véritable intérêt de W3Schools c'est qu'il fournit plein d'exemples rapides. A part ça c'est soit n'importe quoi, soit sans intérêt.

    La doc de XSLT 1.0 c'est ici : https://www.w3.org/TR/xslt-10/

    Cela dit ça n'a aucun rapport avec ton problème.

    apply-templates ne s'utilise évidemment qu'à l'intérieur d'un autre template, sinon tu voudrais appliquer des templates sur quoi, où ?

    et ce <HTML> au milieu de la feuille de style n'a aucun sens. Lui aussi il faut le mettre dans un template (ce qui du coup, rendra le apply-templates qu'il contient, valide)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 122
    Points : 2 235
    Points
    2 235
    Par défaut
    Aouch, en effet, si je fais ça sur un spam ça peut être dangereux : j'ai confondu w3 et w3schools.

    En effet ce matin je me suis aperçu que je n'avais plus cette erreur, au gré des exemples desquels je me suis inspiré cette balise s'est retrouvée dans un template, et dans ce cas en effet ça marche.

    Je crois qu'il faudra que je repasse une couche sur la notion de template en XLST, car pour moi la feuille de style contenait juste ce qu'il s'agissait de faire apparaître dans la sortie, et les templates n'apparaissaient qu'à l'endroit précisément de la balise apply-templates. Apparemment, ce n'est pas tout-à-fait ça.

    Maintenant que j'ai quelque chose qui marche ça ne devrait plus être très long à assimiler. Merci.

    Là je suis en train de me bagarrer pour parser un champ qui contient plusieurs points, mais ça sort de la question initialement posée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT] apply-templates comment elle fonctionne ?
    Par zemzoum89 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 21/10/2010, 10h31
  2. [XSLT] Apply-templates avec select paramétré par un attribut
    Par datrinite dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 26/02/2010, 11h34
  3. [XSLT] apply-templates, select et attributs
    Par YvonSteel dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 20/11/2008, 21h22
  4. [XSLT]apply-templates, pourquoi le texte est récupéré ?
    Par Stansebs dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 13/08/2007, 13h15
  5. [XSLT]Apply-templates qui ne passe pas
    Par Korko Fain dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/05/2007, 13h28

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