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 Schema et inclusions de fichiers XML


Sujet :

XML/XSL et SOAP

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 21
    Points : 17
    Points
    17
    Par défaut [resolu] XML Schema et inclusions de fichiers XML
    bonjour,
    je suis débutant en XML et je voudrais savoir s'il était possible de reproduire la même chose en utilisant un schéma à la place d'une DTD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" ?>
    <!DOCTYPE root [
       <!ENTITY fichier SYSTEM "d:\fichier.xml">
    ]>
    <root>
       <message>hello1</message>
       &fichier;
    </root>
    le fichier "fichier.xml" contient la balise/racine suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <message>hello2</message>
    ou dois-je faire cohabiter ma dtd et mon schéma ? (est-ce possible?)

    merci à tous.

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 27
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    J'avoue ne pas trop comprendre la question

    Pour référencer un schéma dans un fichier XML il faut mettre une en-tete qui ressemble a ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <FR_TESTCHARGE xmlns:cct="urn:oasis:names:tc:ubl:CoreComponentTypes:1.0:0.70" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="TESTCHARGE.xsd">
    Haaz
    Le problème se situe souvent entre la chaise et l'écran.

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Non, ce n'est pas ça que je demandais. je me suis mal exprimé.
    Disons que j'ai 3 fichiers : fichier1.xml, fihcier2.xml et fichier3.xml.
    le fichier 3 est intégré dans le fichier 2 qui est lui même intégré dans le fichier 1. je voudrais savoir si :
    1) c'est possible ?
    2) je dois le faire avec des dtd comme je l'ai mentionné dans mon premier message ? (sinon avez vous d'autres solutions?)
    3) XInclude est-il supporté par IE6 pour pouvoir intégrer des documents XML dans d'autres documents XML ?
    4) il existe en XML Schéma, un moyen de représenter les entités
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <!DOCTYPE blabla [
       <!ENTITY hello SYSTEM "fichier2.xml">
    ]>
    comme dans les DTD ?

    encore merci, et n'hésitez pas à me demander des précisions.

  4. #4
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    1) oui
    2) actuellement je ne vois rien d'autre
    3) je ne crois pas
    4) non cela sort du périmètre de xml-schema qui est un langage de description de données métiers.


    Avec une DTD c'est possible mais on obtient des documents non valides. Or actuellement il n'y a pas d'autre méthode pour référencer un document. Effectivement dans le futur, la norme va surement devenir XInclude : http://www.w3.org/TR/xinclude/
    Xerces doit certainement déjà le supporter (à vérifier)
    "Les gens normaux croient que si ca marche, c'est qu'il n'y a rien à reparer. Les ingénieurs croient que si ca marche, c'est que ca ne fait pas encore assez de choses."
    --Scott Adams

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    j'ai essayé le truc suivant :
    fichier3
    schéma :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    	<xs:element name="root3">
    		<xs:annotation>
    			<xs:documentation>Comment describing your root element</xs:documentation>
    		</xs:annotation>
    	</xs:element>
    </xs:schema>
    xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?xml version="1.0" encoding="UTF-8"?>
    <root3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="D:\XML\projet5\fichier3.xsd">
    </root3>
    fichier2
    schéma (ou j'inclus le schéma du fichier 3):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    	<xs:include schemaLocation="D:\XML\projet5\fichier3.xsd"/>
    	<xs:element name="root2">
    		<xs:annotation>
    			<xs:documentation>Comment describing your root element</xs:documentation>
    		</xs:annotation>
    		<xs:complexType>
    			<xs:sequence>
    				<xs:element ref="root3"/>
    			</xs:sequence>
    		</xs:complexType>
    	</xs:element>
    </xs:schema>
    xml (ou j'utilise, en plus du schéma, une entité dans une dtd, pour pouvoir inclure le fichier3.xml dans le fichier2.xml) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE root2 [
    	<!ENTITY fichier3 SYSTEM "fichier3.xml">
    ]>
    <root2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="D:\XML\projet5\fichier2.xsd">
    	&fichier3;
    </root2>
    donc, jusque là, si j'essaye de visionner dans IE6 mon fichier2.xml (sans mise en forme XSL), tout se passe bien.

    c'est maintenant que cela se corse car je veux inclure mon fichier2.xml dans un fichier fichier1.xml .
    donc je pensais faire la même chose, cad schéma incluant le schéma du fichier 2 puis déclaration d'une entité dans une dtd pour pouvoir inclure le fichier2.xml dans le fichier1.xml.

    fichier 1:
    schéma :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    	<xs:include schemaLocation="D:\XML\projet5\fichier2.xsd"/>
    	<xs:element name="root1">
    		<xs:annotation>
    			<xs:documentation>Comment describing your root element</xs:documentation>
    		</xs:annotation>
    		<xs:complexType>
    			<xs:sequence>
    				<xs:element ref="root2"/>
    			</xs:sequence>
    		</xs:complexType>
    	</xs:element>
    </xs:schema>
    xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE root1 [
    	<!ENTITY fichier2 SYSTEM "fichier2.xml">
    ]>
    <root1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="D:\XML\projet5\fichier1.xsd">
    	&fichier2;
    </root1>
    et c'est là (j'utilise XML Spy 2004)... le fichier est bien formé, mais il y a un blocage à la validation. j'ai le message suivant :

    this file is not valid : DTD Error - text is not well-formed after entity resolution (please verify all entities)

    et quand je le visualise sous IE6, j'ai :
    La page XML ne peut pas être affichée
    Impossible d'afficher l'entrée XML en utilisant la feuille de style XSL. Corrigez l'erreur, puis cliquez sur le bouton Actualiser ou réessayez ultérieurement.


    --------------------------------------------------------------------------------

    Plusieurs déclarations DOCTYPE ne sont pas autorisées. Erreur de traitement de la ressource file:///D:/XML/projet5/fichier2.xml. Ligne 2, Position 11

    <!DOCTYPE root2 [
    ----------^


    je suppose, comme indiqué, que deux déclarations de DTD (à cause de l'inclusion du deuxième fichier dans le premier) ne sont pas possible.

    auriez-vous d'autres solutions à me proposer (actuellement supportées par IE6) ?

  6. #6
    Membre émérite

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

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    Sans vouloir répondre à côté de la plaque, moi je travaille différement. Fichier 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <article>
      <affiche_news />
    </article>
    Fichier 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <news>
      <item>...</item>
      ...
    </news>
    XSL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="affiche_news">
      ...
    </xsl:template>
    Si tu veux valider le fichier 1, tu ajoute la balise "affiche_news" comme EMPTY. Et voilà tout.

    @+ Haypo

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    euh, je n'ai pas très bien saisi comment faire le lien entre le fichier 2 et le fichier 1. est-ce dans la feuille xsl ?

  8. #8
    Membre émérite

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

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    Je suis c**, j'ai oublié le principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:template ...>
      <xsl:variable name="fichier2" select="document('fichier2.xml')" />
      ... on utilise $fichier2
    </xsl:template>
    Voilà voilà !

    @+ Haypo

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    je pense plutôt utiliser XInclude en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <root2 xmlns:xi="http://www.w3c.org/2001/XInclude">
    	<xi:include parse="xml" href="fichier3b.xml"/>
    </root2>
    , appliquer les template sur les éléments xi:include et ensuite charger les fichiers dans la feuille xsl comme tu l'as mentionné.
    cependant, ce qui me chagrine, c'est que je n'ai aucun moyen de valider mon fichier avec les fichiers inclus. solution ?

    un autre point : quelles sont les compatibilités actuelles de XInclude :
    1) avec XML ?
    2) avec XML Schéma ?
    3) avec IE6 ?

    merci.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/02/2012, 18h30
  2. [DOM] Reconstruire un fichier XML à partir d'un autre fichier XML
    Par Jonvols dans le forum Format d'échange (XML, JSON...)
    Réponses: 12
    Dernier message: 13/11/2010, 01h49
  3. Réponses: 5
    Dernier message: 23/03/2009, 16h36
  4. [XSLT] generer un fichier xml optmise d'un autre fichier xml
    Par maguie dans le forum XSL/XSLT/XPATH
    Réponses: 22
    Dernier message: 08/04/2008, 15h45
  5. [AJAX] Charger un fichier XML Schema
    Par kingmandrax dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/10/2006, 10h55

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