8797 sujets

Développement web côté serveur, CMS

Bonjour
J'essaie d'insérer une feuille de style dans un programme cgi écrit en perl.
J'écris

$cgi->start_html(-dtd=>'yes', -title=>$title,
             	      -style => { -src => '../monstyle.css' },
                 );


puis dans mon code proprement dit j'ai quelque chose comme


print $cgi->p(-id=>'p1'
etc....


mais le code de la fuille de style pour l'identificateur p1 n'est pas pris en compte et le texte id p1 apparait même dans la page html.
De plus si j'enlève les id et que je me contente de définir la balise p, rien ne se passe mais le code généré contient bien la bonne balise link faisant référence à la feuille de style (je l'ai mise dans le même répertoire que les scripts pl)

Quelqu'un a t'il une solution ?

Merci par avance
ben je te dirais montre-nous ton code, notamment start_html.

voir des exemples du code html généré.

car ainsi tous ceux qui s'y connaissent en CSS pourrons peut-etre t'aider même sans s'y connaitre en perl.

je suis programmeur php ( fou d'ailleurs comme ton code semble ecris dans ce language )

j'ai un peu de connaissance perl je pourrais peut-être ( peut-être) capter l'erreur si je la voyais.
mais là on a rien a analyser.

quoi que premiere remarque:

a écrit :
$cgi->start_html(-dtd=>'yes', -title=>$title,
-style => { -src => '../monstyle.css' },
);


voila la tete d'une balise link inserant une feuille de style.
<link rel="stylesheet" type="text/css" href="feuille_style.css">


l'attribut du fichier est un attribut href et non src. as tu générer la balise <link> adequate?
Modifié par CPascal (08 Mar 2008 - 17:22)
RE.
Merci pour la réponse

voilà le début de mon code


use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use CGI: [langue]retty qw(:html4);			#permet d'avoir un joli code en colonne et non sur 					une seule ligne
my $cgi = new CGI;
my $title = 'CGI Style!';
$cgi->default_dtd(
            '-//W3C//DTD XHTML 1.0 Strict//EN',
            'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd');
print $cgi->header( -charset=>'UTF-8'),
$cgi->start_html(-dtd=>'yes', -title=>$title,
              # -head  => style({type => 'text/css'},
               #                join('',<DATA>), # pour joindre du style écrit dans l'entete  http://sedition.com/perl/cgi-style.html
 
                #               ),
	      -style => { -src => 'monstyle.css' },
                 );
my $auteur = "moi-meme";
print $cgi->h1('Elements de HTML');
my $id="p1";
print $cgi->p(
			"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
			Sed non risus. Suspendisse lectus tortor, dignissim sit amet, 
			adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam."

		);



et le code de la page généré

<?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" lang="en-US" xml:lang="en-US"><head><title>CGI Style!</title>
<link rel="stylesheet" type="text/css" href="monstyle.css" />
</head><body><h1>
	Elements de HTML
</h1>
<p>


merci encore
re...
une petite remarque sur le code précédent : là où il y a le smiley, lire "pretty"
Merci
pas sur que ce soit important mais comme on est sur un site de puriste, j'ai vu ce conseil apparaître plusieurs fois.

<?xml version="1.0" encoding="iso-8859-1"?>

au debut c'est bof.voir la cause de tes pb.

normalement rien ne doit preceder la declaration du doctype.

moi je ne mets jamais cette balise pour un fichier html. seulement xml.

edit:
sinon tu utilises un doctype strict xhtml. il faudrait peut-être que tu refermes </p> derriere.
Modifié par CPascal (08 Mar 2008 - 19:22)
Re,

bizarre bizarre j'ai testé ton code généré sans aucune correction mis dans fichier en .html

plus le fichier css montyle.css suivant.

p {
	background-color:red;
}

et p apparait en rouge.

<edit>quoi que non ça ne marche que si le paragraphe contient du texte! j'imagine que sinon sa hauteur vaut nulle (en xhtml strict en plus) mais c'est un truc a demander aux experts CSS, s'il viennent a passer par la partie serveur du forum

sinon
</edit>

le probleme pourrait être un pb d'extension, de configuration serveur
ou encore si ton css est complexe un pb de priorité d'application css...

je doute que ce soit un pb perl si tu generes un code html correct.
En plus si je comprends bien tu utilises des fonctions d'une librairie CGI.
Modifié par CPascal (08 Mar 2008 - 19:22)