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 et balise HTML div


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre Expert

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Aveyron (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Par d�faut [R�solu] XSLT et balise HTML div
    Salut,

    J'ai un p'tit probl�me dans mon site web. Je l'ai pass� au XML+XSLT+CSS2 r�cement, mais j'ai un probl�me � la validation w3c.org : 'there is no attribute "XMLNS" [ for div ]'. Code XSLT :
    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
    <xsl:variable name="baniere">
      <div class="enbref">
       En bref : (...)
      </div>
    </xsl:variable>
     
    <xsl:template match="@*|node()">
      <xsl:copy>
        <xsl:apply-templates select="@*|node()" />
      </xsl:copy>
    </xsl:template>
     
    <xsl:template match="/doc">
      <html>
        <head>...</head>
        <body>
          <xsl:apply-templates select="$baniere" />
          <div class="centre">
            <xsl:apply-templates select="@*|node()" />
            ...
            <div class="spacer"><hr /></div>
          </div>
        </body>
      </html>
    </xsl:template>
    (la racine de mes documents XML �tant /doc)

    Ceci me g�n�re deux types de balises div :
    1- <div xmlns:xsl="http://www.w3.org/1999/XSL/Transform" class="baniere">
    2- <div class="centre">

    Le probl�me venant des balises (1) qui sont pass�es � travers "<xsl:apply-templates select="@*|node()" />".

    @+ Haypo

  2. #2
    Membre �clair�
    Inscrit en
    Avril 2003
    Messages
    52
    D�tails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 52
    Par d�faut
    Et par quel template est g�n�r� le cas 1 ?

  3. #3
    Membre �clair�
    Inscrit en
    Avril 2003
    Messages
    52
    D�tails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 52
    Par d�faut
    Excuse ! J'avais pa vu que tu r�pondais � ma question...

    A mon avis et � vu de nez, il doit y avoir dans ton XML source des balises "div" avec l'espace de nom de xslt ?

  4. #4
    Membre Expert

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Aveyron (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Par d�faut
    Les balises div sont plac�es dans les fichiers XSLT (.xsl). C'est l'ent�te qui n'est pas bon ?
    (baniere.xsl)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:variable name="baniere">
    ...
    </xsl:variable>
    </xsl:stylesheet>
    Au fait, j'ai plusieurs fichiers XSLT :
    - html.xsl
    - general.xsl
    - baniere.xsl
    - signature.xsl
    - estat.xsl
    - ...

    Mes fichiers .PHP appellent html.xsl qui inclu general.xsl, qui lui inclu presque tout le reste :
    (html.xsl)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:include href="xsl/general.xsl" />
    ...
    (general.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
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:param name="page" />
     
    ...
     
    <xsl:template match="@*|node()">
      <xsl:copy>
        <xsl:apply-templates select="@*|node()" />
      </xsl:copy>
    </xsl:template>
     
    <xsl:include href="xsl/baniere.xsl" />
    <xsl:include href="xsl/menu.xsl" />
    <xsl:include href="xsl/sous_menu.xsl" />
    <xsl:include href="xsl/signature.xsl" />
     
    </xsl:stylesheet>
    Avez-vous besoin de tout le code source ?

    @+ Haypo

  5. #5
    Membre �clair�
    Inscrit en
    Avril 2003
    Messages
    52
    D�tails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 52
    Par d�faut
    Surtout pas ! Bien au contraire, essaie d'isoler ce qui provoque cette d�claration d'espace de nom intempestive. Enl�ve des includes, supprime des templates, etc.

  6. #6
    Membre Expert

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Aveyron (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Par d�faut
    Le probl�me venait des balises div plac�es � l'int�rieur d'une page XSLT. L'attribut "xmlns:xsl=..." �tait g�n�r� par la page XSLT lors du passage � travers xsl:apply-templates. J'ai trouv� ma solution sur le net :
    http://www.biglist.com/lists/xsl-list/archives/200108/msg00552.html

    Il ne faut pas utiliser le code:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    <xsl:template match="@*|node()">
      <xsl:copy>
        <xsl:apply-templates select="@*|node()" />
      </xsl:copy>
    </xsl:template>
    car selon la r�f�rence W3C.org :
    The xsl:copy element provides an easy way of copying the current node. Instantiating the xsl:copy element creates a copy of the current node. The namespace nodes of the current node are automatically copied as well, but the attributes and children of the node are not automatically copied. The content of the xsl:copy element is a template for the attributes and children of the created node; the content is instantiated only for nodes of types that can have attributes or children (i.e. root nodes and element nodes).
    http://www.w3.org/TR/xslt#copying

    ---

    Finalement, il faut utiliser :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xsl:template match="@*">
      <xsl:copy />
    </xsl:template>
     
    <xsl:template match="*">
      <xsl:element name="{name()}" >
        <xsl:apply-templates select="* | text() | @*"/>
      </xsl:element>
    </xsl:template>
    @+ Haypo

  7. #7
    Membre Expert

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Aveyron (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Par d�faut
    J'ai r�pondu, mais ma r�ponse semble s'�tre perdu dans les m�andes d'Internet ...

    J'ai r�solu mon probl�me, il venait de xsl:copy, car cette fonction (?) copie le namespace. J'utilise alors :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xsl:template match="@*">
      <xsl:copy />
    </xsl:template>
     
    <xsl:template match="*">
      <xsl:element name="{name()}" >
        <xsl:apply-templates select="* | text() | @*"/>
      </xsl:element>
    </xsl:template>
    Et les probl�mes ont disparus ;-) J'ai maintenant r�ussi � faire passer ma page (mon site !) en XHTML 1.1, cool.

    @+ Haypo

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Edition d'une balise HTML div dans une WebView
    Par everdgg dans le forum Composants graphiques
    R�ponses: 3
    Dernier message: 13/07/2012, 12h57
  2. [XSLT] Comment inclure une balise xsl dans une balise html
    Par sylsau dans le forum XSL/XSLT/XPATH
    R�ponses: 3
    Dernier message: 13/10/2006, 09h33
  3. [XSLT][PHP]conversion balise html
    Par abdoulax dans le forum XSL/XSLT/XPATH
    R�ponses: 1
    Dernier message: 11/10/2006, 11h34
  4. [XSLT][>HTML]Affiché des balises HTML
    Par tiboel dans le forum XSL/XSLT/XPATH
    R�ponses: 2
    Dernier message: 26/06/2006, 20h15
  5. [XSLT] inclure du XSL dans une balise html
    Par iaa dans le forum XSL/XSLT/XPATH
    R�ponses: 2
    Dernier message: 05/08/2002, 15h57

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