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 :

[XSLT] [XPath] Nombre d'ancètres


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre actif Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Points : 221
    Points
    221
    Par défaut [XSLT] [XPath] Nombre d'ancètres
    Hello,
    Je voudrais faire un template avec un match sur un élément qui n'a qu'un seul ancètre, c'est-à-dire eui est juste dans la racine.
    J'ai le code suivant, mais il me met l'erreur: "Le préfixe de l'espace de noms ancestor n'est pas déclaré..."
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xf="http://www.w3.org/2002/xforms" xmlns:def="www.ploxien.com/ns/def" xmlns:pr="http://www.arcaciel.com/profil/ns/system">
        <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
        <xsl:template match="xs:schema">
            <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms" xmlns:pr="http://www.arcaciel.com/profil/ns/system">
                <body>
                    <xsl:apply-templates/>
                </body>
            </html>
        </xsl:template>
        <xsl:template match="xs:element[count(self::ancestor:*) = 1]">
            ...
            <br/>
            <xsl:value-of select="@type"/> : <xsl:value-of select="@name"/>
            <br/>
        </xsl:template>
    </xsl:stylesheet>
    Vous voyez de quoi vient l'erreur?
    Merci

  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,

    ancestor est un axe au même titre que self, tu ne peux pas utiliser les deux en même temps dans un "pas" XPath.

    Pour créer un template ne "matchant" que les <xs:element> fils de <xs:schema>, il existe une écriture toute simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="xs:schema/xs:element">
    ...
    </xsl:template>

  3. #3
    Membre actif Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Points : 221
    Points
    221
    Par défaut
    En fait, ce que je cherchais... Merci a+
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="xs:element[count(ancestor::*) = 1]">

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

Discussions similaires

  1. [XSLT][XPATH] Nombre d'élèment ayant pour nom..
    Par SONY30 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 26/04/2007, 13h49
  2. xslt+xpath
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 03/10/2005, 15h08
  3. [XSLT+XPath] Échapper les accolades XPath
    Par Floyd dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 30/09/2005, 23h04
  4. [XPATH] Nombres de noeuds freres ?
    Par DemonKN dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 28/02/2005, 12h29

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