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

Documents Java Discussion :

et les CSS ?


Sujet :

Documents Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Par défaut et les CSS ?
    Bonjour à tous !

    Je voulais savoir si vous connaissez une API qui me permettrait de récupérer facilement les propriétés et les valeurs pour un sélecteur dans un document CSS.

    Après avoir fait une recherche sur Google j'ai trouvé l'API Flute ou encore SAC mais le problème c'est qu'elles sont peu documentées et je n'arrive pas à faire quelque chose avec ça. Peut être que quelqu'un d'entre vous connait la façon d'utiliser ces API ?

    Merci d'avance pour vos réponses.

  2. #2
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour Joey5,

    je suis en plein dans le sujet avec le moteur de CSS TK-UI qui permet d'appliquer des styles sur des widgets SWT ou Swing.

    Et j'utilise effectivement un parseur SAC pour parser les feuilles de styles.
    EN fait SAC est une recommandation w3c pour parser des feuilles de styles et apres il y a plusieurs implementation comme flute, batik, easystate...

    Dans mon CSS engine tu peux choisir ton implementation SAC. Toutes ces implementations supportent CSS2 mais pas CSS3 (je susi en train de modifier flute pour gerer (pas tout) quelques fonctionnalites CSS3).

    J'ai fait un guide user qui explique tres brievement les principes de SAC.

    SAC fonctionne comme SAX, autrement il faut implementer un DocumentHandler qui intercepte les evenements (property, selector....).

    Dans mon cas j'ai cree une notion de factory SAC (batik, flute...)
    Et tu as des exemples ici.

    Le principes de SAC en gros c'est faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // 1. Get SAC Parser
    org.w3c.css.sac.Parser parser = new org.w3c.flute.parser.Parser();
    // 2. Set SAC Document Handler into parser
    DocumentHandler handler = new MockDocumentHandler();
    parser.setDocumentHandler(handler);
    // 3. Parse text.css
    InputSource styleSheetSource = new InputSource();
    styleSheetSource.setCharacterStream(new StringReader("input {color:red;}"));
    parser.parseStyleSheet(styleSheetSource);
    Ela classe MockDocumentHandler permet d'afficher les evenements SAC :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    package org.akrogen.tkui.css.core.sac;
     
    import org.w3c.css.sac.AttributeCondition;
    import org.w3c.css.sac.CSSException;
    import org.w3c.css.sac.Condition;
    import org.w3c.css.sac.ConditionalSelector;
    import org.w3c.css.sac.ElementSelector;
    import org.w3c.css.sac.InputSource;
    import org.w3c.css.sac.LexicalUnit;
    import org.w3c.css.sac.SACMediaList;
    import org.w3c.css.sac.Selector;
    import org.w3c.css.sac.SelectorList;
     
    public class MockDocumentHandler implements org.w3c.css.sac.DocumentHandler {
     
    	public void comment(String text) throws CSSException {
    		System.out.println("MockDocumentHandler#comment], text=" + text);
     
    	}
     
    	public void endDocument(InputSource source) throws CSSException {
    		System.out.println("[MockDocumentHandler#endDocument], source= "
    				+ source);
     
    	}
     
    	public void endFontFace() throws CSSException {
    		System.out.println("[MockDocumentHandler#endFontFace]");
     
    	}
     
    	public void endMedia(SACMediaList media) throws CSSException {
    		System.out.println("[MockDocumentHandler#media], media=" + media);
     
    	}
     
    	public void endPage(String name, String pseudo_page) throws CSSException {
    		System.out.println("[MockDocumentHandler#endPage], name=" + name
    				+ ", pseudo_page=" + pseudo_page);
     
    	}
     
    	public void endSelector(SelectorList selectors) throws CSSException {
    		int length = selectors.getLength();
    		System.out.println("[MockDocumentHandler#endSelector], selectors="
    				+ selectors + ", length=" + length);
    		for (int i = 0; i < length; i++) {
    			Selector selector = selectors.item(i);
    			if (selector instanceof ElementSelector) {
    				// Element selector
    				ElementSelector elementSelector = (ElementSelector) selector;
    				System.out.println("\tElementSelector=> localName="
    						+ elementSelector.getLocalName());
    			} else if (selector instanceof ConditionalSelector) {
    				ConditionalSelector conditionalSelector = (ConditionalSelector) selector;
    				System.out.println("\tConditionalSelector");
    				Condition condition = conditionalSelector.getCondition();
    				if (condition instanceof AttributeCondition) {
    					AttributeCondition attributeCondition = (AttributeCondition) condition;
    					System.out
    							.println("\t\tCondition (type=AttributeCondition)=> localName="
    									+ attributeCondition.getLocalName()
    									+ ", value="
    									+ attributeCondition.getValue());
    				} else {
    					System.out.println("\t\tCondition=>" + condition);
    				}
     
    			} else
    				System.out.println(selector);
    		}
     
    	}
     
    	public void ignorableAtRule(String atRule) throws CSSException {
    		// TODO Auto-generated method stub
     
    	}
     
    	public void importStyle(String uri, SACMediaList media,
    			String defaultNamespaceURI) throws CSSException {
    		// TODO Auto-generated method stub
     
    	}
     
    	public void namespaceDeclaration(String prefix, String uri)
    			throws CSSException {
    		// TODO Auto-generated method stub
     
    	}
     
    	public void property(String name, LexicalUnit value, boolean important)
    			throws CSSException {
    		System.out.println("[MockDocumentHandler#property], name=" + name
    				+ ", value=" + value);
     
    	}
     
    	public void startDocument(InputSource source) throws CSSException {
    		// TODO Auto-generated method stub
     
    	}
     
    	public void startFontFace() throws CSSException {
    		// TODO Auto-generated method stub
     
    	}
     
    	public void startMedia(SACMediaList media) throws CSSException {
    		// TODO Auto-generated method stub
     
    	}
     
    	public void startPage(String name, String pseudo_page) throws CSSException {
    		// TODO Auto-generated method stub
     
    	}
     
    	public void startSelector(SelectorList selectors) throws CSSException {
    		// TODO Auto-generated method stub
     
    	}
     
    }
    Donc pour resumer il faut coder une implemntation SAC DocumentHandler.
    Ce DocumentHandler permettra de stocker dans la structure qu etu veux les infos de la feuille de style. Mon DocumentHnadler lui construit une instance w3c CSSSTyleSheet.

    Angelo

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Par défaut
    Bonsoir Azerr !

    Un énorme merci pour ta réponse ! Je crois que je ne pouvais pas espérer mieux et plus précis comme réponse ! Je commence à comprendre l'implémentation de SAC maintenant ! J'avais pas vraiment fait le rapprochement avec SAX mais là c'est beaucoup plus clair ! Je vais mettre ça en place maintenant ! Encore merci !

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Par défaut Parsing CSS
    Bonjour tout le monde,
    Je m'intéresse comme vous à l'API SAC que j'utilise dans mon projet de fin d'études. J'ai besoin de récupérer les ID et les Class d'un fichier CSS pour effectuer certains traitements(modification, suppression...). Dans cette API je ne sais pas comment faire pour différencier entre un sélecteur "#" et un sélecteur "." . Aurez vous une idée ou quelques exemples à suivre?
    Je vous remercie d'avance

Discussions similaires

  1. struts-layout et les css
    Par kaikai dans le forum Struts 1
    Réponses: 1
    Dernier message: 24/04/2006, 16h58
  2. Problème de positionnement avec les css
    Par vidocq dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 21/04/2006, 13h40
  3. Petit probleme avec les css
    Par Seth77 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 12/02/2006, 18h23
  4. problèmes avec les CSS en ASP.NET ?
    Par fr3d dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 16/09/2005, 14h23

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