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 :

[xml] Comment définir un Namespace qui ajoute des attribut à XHTML [FAQ]


Sujet :

XML/XSL et SOAP

  1. #1
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut [xml] Comment définir un Namespace qui ajoute des attribut à XHTML
    Bonjour

    je ne trouve pas de doc sur le bon moyen de définir proprement un namespace.

    je ne parle pas de déclarer un namespace dans un document mais bien de définir le namespace.

    par exemple
    je veux pouvoir ajouter un attribut perso à la balise A de XHTML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a myns:myattribute="some value" name="this">this</a>
    pour pouvoir faire ça en restant strict il me faut déclarer mon namespace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
     xml:myns="http://myserver/mypath/mynamespace" lang="fr">
    la question est :
    que doit référencer l'uri http://myserver/mypath/mynamespace comme documment (dtd shema )?
    et comment le définir pour dire qu'on ajoute un attribut à un tag qu'on défini pas ?

    merci
    A+JYT

  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,

    La création de balises personnalisées intégrées à XHTML est un sujet assez complexe, nécessitant de connaître parfaitement la syntaxe des DTD. Plusieurs documents du W3C traitent de ce sujet.

    Une introduction : http://www.w3.org/MarkUp/modularization
    Modularisation de XHTML : http://www.w3.org/TR/xhtml-modularization/
    Tutoriel sur la création d'un module personnalisé dans XHTML : http://www.w3.org/MarkUp/Guide/xhtml-m12n-tutorial/

    Au fait, c'est xmlns:myns, pas xml:myns.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Merci bien je vais lire ça
    et voir comment faire.

    si j'arrive à quelque chose je posterais la réponse ici
    A+JYT

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    j'avais écrit que je reviendrais expliquer ce que j'avais trouvé et je m'aperçois que je n'ai pas tenu parole
    alors je corrige cet oubli
    comme je le pensais pour pouvoir ajouter des attributs sur des schémas existant il faut définir un nouveau schémas.
    bien évidement il n'est pas nécessaire de tout réécrire.

    la première chose à faire est donc de définir un schémas qui vas étendre l'existant.
    j'ai pris l'exemple de de xhtml et de tal (tal est le langage de template de Zope)
    tal ajoute des attribut au tag html pour générer l'affichage du contenu dynamique comme ceci
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="modifObject.html" 
          tal:content="object/getTitle">Modifier l'objet</a>

    définition du schéma général du document il redéfini celui de xhtml
    Code xml : 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"?>
    <xs:schema
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.w3.org/1999/xhtml"
        xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
        xmlns="http://www.w3.org/1999/xhtml"
        elementFormDefault="qualified" >
        <xs:import
            namespace="http://www.w3.org/XML/1998/namespace"
            schemaLocation="http://www.w3.org/2001/xml.xsd" />
        <xs:include
            schemaLocation="xhtml11.xsd" />
        <xs:import
            namespace="urn:org.phptal.tal"
            schemaLocation="tal-0.xsd" />
        <xs:include
            schemaLocation="tal-module-0.xsd" />
    </xs:schema>
    ce schéma garde le targetNamespace de Xhtml
    importe xml (ce n'est pas 100% nécessaire dans ce cas car xhtml11 le fait)
    il inclus le schéma xhtml11 d'origine (je l'avais en local mais l'idéal est de mettre son url du w3c)
    importe la définition de tal dans un namespace proprio (ici si le schéma est public il convient d'utiliser un namespace en http://....)
    et inclus le schémas qui dit comment celui de tal s'insère dans xhtml1.1

    le schéma de tal est un schéma définissant des attributs (soit au niveau global soit dans des groupe) j'ai pour l'exemple choisit un seul groupe mais on peut en mette plusieurs mixer les groupe et les attributs globaux
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       elementFormDefault="qualified"
       xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
       targetNamespace="urn:org.phptal.tal">
        <xs:attributeGroup name="tal.attlist">
            <xs:attribute name="content" type="xs:string"/>
        </xs:attributeGroup>
    </xs:schema>
    notez que le tragetNamspace est celui de tal
    je n'ai mis dans l'exemple qu'un seul attribut

    puis dans le dernier schéma on indique comment les attributs tal vont se placer dans xhtml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
               elementFormDefault="qualified" 
               xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/" >
        <xs:import namespace="urn:org.phptal.tal"
                   schemaLocation="tal-0.xsd" />
        <xs:redefine schemaLocation="xhtml-hypertext-1.xsd">
        <xs:attributeGroup name="xhtml.a.attlist">
            <xs:attributeGroup ref="xhtml.a.attlist"/>
            <xs:attributeGroup ref="tal.attlist"/>
    		</xs:attributeGroup>
        </xs:redefine>
    </xs:schema>
    c'est ici que ce fait la fusion ce schéma n'a pas de target car il est destiné à être inclus dans celui du doc principal. on pourait directement écrire cela dans le schéma principal mais c'est plus facile à inclure dans divers schémas principaux en le séparant (par exemple faire un schéma principal incluant plusieurs définition de namespaces tal pour les template ext ou extjs etc.)
    dans l'exemple je redéfinit uniquement que la partie hypertext de xhtml11 (que j'ai en local aussi mais qu'on peut et c'est préférable référencer par son url)
    on redéfini le groupe d'attribut de hypertext nommé xhtml.a.attlist
    celui-ci défini la liste des attributs autorisé pour la balise a
    on indique qu'il conserve ses attributs et qu'en plus il à droit à ceux de tal
    tal etant définit dans un targetNamspace il faudra préfixer les attribut tal sur la balise a

    on peut ainsi ajouter des attribut sur des balise existante, ajouter des balises
    utiliser des attribut du schéma hôte (xhtml) sur des balises ajouté

    reste à indique au document qu'il doit utiliser le nouveau schéma
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="utf-8"?>
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:tal="urn:org.phptal.tal"
          schemaLocation="http://www.w3.org/1999/xhtml xhtml11-tal.xsd"
          >
    	<head>
    		<meta content="ets"></meta>
    		<title>test</title>
        </head>
    	<body>
      <a href="test.html" tal:content="45">a</a>
      </body>
    </html>
    le namespace principal reste celui de xhtml11 cela permet à un outil je gérant pas les namespaces de valider le html
    on indique qu'on va utiliser le namespace de tal avec le préfixe tal
    et on indique ou ce trouve le schéma redéfini

    ce n'est pas très compliqué mais ça ne s'invente pas.

    tout n'est pas rose certain outils implémente mal les spec du w3c et annonce des erreurs de validation là où il n'y en a pas.
    généralement ces outils ne parviennent pas à valider les schémas "modularisés" du w3c entre autre xhtml11.xsd

    par contre c'est bien pratique dans les éditeurs xml
    les balises ou attribut ajouté sont souvent correctement proposé dans l'assistance à l'écriture
    A+JYT

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/08/2009, 10h45
  2. Réponses: 1
    Dernier message: 28/12/2007, 12h14
  3. Réponses: 2
    Dernier message: 16/05/2007, 16h13
  4. Réponses: 2
    Dernier message: 27/10/2006, 18h22
  5. Richtextbox qui ajoute des lignes vides
    Par Seto dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 19/09/2006, 14h10

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