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

Format d'échange (XML, JSON...) Java Discussion :

Appliquer automatiquement une feuille de style


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre régulier
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    171
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 171
    Points : 78
    Points
    78
    Par défaut Appliquer automatiquement une feuille de style
    Bonjour,

    Nous avons un XML qui fait référence à une feuille de style pour transformer les données en HTML. Voici une partie du fichier XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?xml-stylesheet type="text/xsl" href="https://chorus-pro.gouv.fr/xsl/FSO1100A.xsl"?>
    <Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cur="urn:un:unece:uncefact:codelist:specification:54217:2001" xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" xmlns:uni="urn:un:unece:uncefact:codelist:specification:66411:2001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 ./xsd/maindoc/UBL-Invoice-2.0.xsd">
    	<cbc:UBLVersionID>01.01.01</cbc:UBLVersionID>
    	<cbc:ID>0051565646</cbc:ID>
    	<cbc:IssueDate>2016-08-12</cbc:IssueDate>
    Est-il possible que notre programme Java applique la transformation automatiquement ? C'est à dire que la transformation est capable de voir que la feuille de style est à un emplacement sur le net, qu'elle aille la chercher/consulter et enfin qu'elle applique la transformation.
    Ou devons-nous télécharger la feuille de style depuis https://chorus-pro.gouv.fr/xsl/FSO1100A.xsl pour ensuite faire la transformation avec javax.xml.transform.Transformer ?

    Merci d'avance pour votre aide,
    Nicolas

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    C'est faisable, oui.

    En Java quand on veut appliquer une transformation XSLT dont on connaît déjà à l'avance la stylesheet, on fait comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String xmlFile = "test.xml";
    String stylesheetFile = "FSO1100A.xsl";
     
    Transformer transformer = TransformerFactory.newInstance().newTransformer(new StreamSource(stylesheetFile));
     
    transformer.transform(new StreamSource(xmlFile), new StreamResult(System.out));
    C'est donc assez simple.

    Quand on ne sait pas à l'avance quelle est la stylesheet et qu'il faut l'extraire du document source, ça devient comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    String xmlFile = "test.xml";
     
    TransformerFactory factory = TransformerFactory.newInstance();
    Source xml = new StreamSource(xmlFile);
     
    // les nulls sont là parce qu'on ne veut pas affiner la recherche de stylesheet: on prend celle qu'on trouve.
    Source stylesheet = factory.getAssociatedStylesheet(xml, null, null, null);
     
    Transformer transformer = factory.newTransformer(stylesheet);
     
    transformer.transform(xml, new StreamResult(System.out));
    Mais attention, ça veut dire que n'importe quel fichier XML que tu passes à travers cette moulinette peut te dire d'aller chercher un fichier XSLT n'importe où, et le fichier XSLT peut contenir n'importe quoi. Ce sont deux angles d'attaque si tu ne peux pas avoir pleine confiance dans ceux qui t'envoient des fichier XML, et par conséquence, ceux qui fournissent les XSLT associés.

    Il serait bien plus prudent, et c'est ce que font les programmes professionnels, de savoir à l'avance quelle est la feuille de style à appliquer, de l'avoir déjà à portée de main, et d'appliquer ça.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    171
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 171
    Points : 78
    Points
    78
    Par défaut
    Merci pour tes réponses. Notre feuille de style vient de l'Etat donc c'est sécurisé.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Elle vient de l'État si le fichier XML dit d'aller prendre celle qui vient de l’État.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/01/2013, 10h11
  2. Réponses: 6
    Dernier message: 16/04/2009, 22h42
  3. Réponses: 4
    Dernier message: 11/12/2007, 14h50
  4. Réponses: 5
    Dernier message: 22/07/2005, 23h40

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