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][DTD] Reconnaitre le DTD associé à un XML


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Par défaut [XSLT][DTD] Reconnaitre le DTD associé à un XML
    Bonjour,
    J'ai un truc idiot qui m'arrive, j'ai un serveur qui manipule des fichiers xml, leur applique quelques transformations et les envois au client.
    Quand le client demande une fiche complète le xsl suivant est appelé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
         version="1.0">
     
      <xsl:output encoding="iso-8859-1"/>  
     
      <xsl:template match="@*|node()">
        <xsl:copy>
          <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
      </xsl:template>
     
    </xsl:stylesheet>
    dans l'idée ça permet d'envoyer le xml complet (cherchez pas on est obligé de lui faire passer par une transformation même si au final on modifie pas la structure ou le contenu du xml)
    le problème qui se pose c'est que je ne sais pas comment concerver dans mon xml le doctype original.

    par exemple mon fichier à l'origine commence par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="iso-8859-1"?>
    <!DOCTYPE metadata SYSTEM "http://www.le_super_projet.org/metadata/dtd/iso19115/base_alpha.dtd">
    <metadata>
            <Metadata>
                    <mdFileID>vecteur_x1542</mdFileID>
                    <mdParentID></mdParentID>

    et après le passage dans le xsl j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="iso-8859-1"?>
    <metadata>
            <Metadata>
                    <mdFileID>vecteur_x1542</mdFileID>
                    <mdParentID></mdParentID>

    L'idée est qu'est ce que je met pour garder le doctype (en partant du principe qu'il varie donc je ne peux pas le mettre en dur)

    j'espère avoir été assez clair

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Par défaut
    je crois que ce n'est pas possible


    "La déclaration XML <?xml version...> ainsi que la Définition de Type de Document ne sont pas traitées par le processeur XSL, ainsi elles ne font pas parties de l'arborescence d'un document XML."

  3. #3
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Par défaut
    bon....
    tant pis je dirai à mon utilisateur que c'est pas possible

  4. #4
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Attention, il n'est effectivement pas possible pour le processeur de savoir s'il y a avait une DTD associée à la source XML (cette information reste au niveau du parseur et ne remonte pas jusqu'au processeur), par contre il est tout à fait possible d'en associer une en sortie, grâce aux attributs doctype-public et doctype-system de xsl:output.
    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

  5. #5
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Par défaut
    oui mais comme cet attribue varie suivant les fiches je ne voient pas comment faire en sorte que mon xml de sortie ai le même doctype que celui d'entrée
    (mais sinon oui je sais qu'on peut configurer l'output pour avoir un doctype spécifié une fois pour toute mais la ça répond pas à mon besoin)

  6. #6
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Avec quel langage et quelle API développes-tu ? Parce que au pire, tu peux faire un pré-traitement qui extrait l'information DOCTYPE avec une xpression régulière...
    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

Discussions similaires

  1. [Xerces][C++][DTD][XSD] Validation d'un fichier XML
    Par xxiemeciel dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 04/08/2010, 20h10
  2. [1.1] Ajout de DTD dans la génération de fichier XML
    Par shadowninja dans le forum Windows Forms
    Réponses: 1
    Dernier message: 22/01/2007, 10h33
  3. [DTD] Créé un DTD à partir d'un fichier XML
    Par Oberown dans le forum Valider
    Réponses: 5
    Dernier message: 14/12/2006, 11h55
  4. [DTD] Créer une DTD à partir d'un fichier XML
    Par laadhar dans le forum Valider
    Réponses: 3
    Dernier message: 11/07/2006, 09h56
  5. [DTD][java]Verifier qu'un doc XML est bien formé
    Par bart64 dans le forum Valider
    Réponses: 3
    Dernier message: 08/01/2005, 14h17

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