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

Bibliothèques et frameworks PHP Discussion :

[XML] [XML Writer] Échapper la transformation en entité


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut [XML] [XML Writer] Échapper la transformation en entité
    Bonjour,

    J'essaye d'écrire du XHML via php. Je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	require_once('WebWriter.php');
    	require_once('XHTMLWriter.php');
    	$w = new XHTMLFile('/home/slide/toto.xhml');
    	$a = array('toto','tata','titi');
    	$w -> open_head();
    	$w -> set_content_type('text/xml; charset="utf-8"');
    	$w -> close_head();
    	$w -> open_body();
    	$w -> write_list($a,false);
    	$w -> close_body();
    	unset($w)
    bien sur j'ai des classes (dérivées de XMLWriter) qui sont censées me faire ça
    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
    <?php 
    class WebDocument
    {
    	protected $doc = null; // the document to write
    	public function __construct($uri)
    	{
    		if(is_file($uri))
    		{
    			unlink($uri);
    		}
    		else
    		{
    			touch($uri);
    		}
    		$this->doc = new XMLWriter();
    		$this->doc->openURI($uri);
    		$this->doc->setIndent("\t");
    	}
    	/** Function to open the head element */
    	public function open_head()
    	{
    		$this->doc->startElement('head');
    	}
    	public function set_content_type($content)
    	{
    		$this->doc->startElement('meta');
    		$this->doc->writeAttribute('http-equiv','Content-Type');
    		$this->doc->writeAttribute('content',$content);
    		$this->doc->endElement();
     
    	}
    	/** Fucntion to set the title of web document
    	 * @param [String] Title
    	 */
    	public function set_title($title)
    	{
    		$xw->writeElement ('title', $title);
    	}
    	/** Function to close the head element */
    	public function close_head()
    	{
    		$this->doc->endElement();
    	}
    	public function open_body()
    	{
    		$this->doc->startElement('body');
    	}
    	/** Write a HTML list
    	 * @param [Array] A php array, indiced or scalar */
    	public function write_list($array,$ordoned = false)
    	{
    		if($ordoned)
    		{
    			$this->doc->startElement('ol');
    		}
    		else
    		{
    			$this->doc->startElement('ul');
    		}
    		foreach($array as $value)
    		{
    			$this->doc->startElement('li');
    			$this->doc->text($value);
    			$this->doc->endElement();
    		}
    		$this->doc->endElement();
    	}
    	public function close_body()
    	{
    		$this->doc->endElement();
    	}
        public function __destruct()
        {
     
        	$this->doc->endDtd();
        	$this->doc->endElement();
        }   
    }
    ?>
    et
    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
    <?php
    class XHTMLFile extends WebDocument
    {
    	/** Construct the wap file
    	* Stop a the <head> element
    	*@param [String] URL to wap file */
    	public function __construct($uri)
    	{
     
    		parent::__construct($uri);
    		$this->doc->startDocument('1.0','UTF-8');
       		$this->doc->startDtd('html','-//W3C//DTD XHTML 1.0 Strict//EN', 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd');
    		$this->doc->endDtd();
    		$this->doc->startElement ('html'); 
    		$this->doc->writeAttribute( 'xmlns', 'http://www.w3.org/1999/xhtml');
    		$this->doc->writeAttribute( 'xml:lang', 'en');
     
    	}	
    }
    ?>
    mais le pb c'est qu'à la fin, j'ai ça
    <?xml version="1.0" encoding="UTF-8"?>
    <!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" xml:lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/xml; charset=&quot;utf-8&quot;"/>
    </head>
    <body>
    <ul>
    <li>toto</li>
    <li>tata</li>

    <li>titi</li>
    </ul>
    </body>
    </html>
    c'est donc quand j'écris les meta, il intérprete le " commen une entité

    est ce qu'il y a moyen de lui dire de ne pas le faire ?

    PS : est ce que c'est un bonne idée de faire des classes comme ça qui m'écrive du XHTML (j'en ai un autre pour du WML)
    en disant ça je pense surtout à IE qui est génant (parfois )
    par exemple lorsqu'on lui précise la ligne
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="utf-8" ?>
    il intérprete mal certains CSS (eh oui)
    lesquels je m'en rappel plus mais c'était par rapport au centrage

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 670
    Par défaut
    dans le contenu de l'entête "Content-type", il n'y a pas de guillemets donc tu peux directement écrire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$w -> set_content_type('text/xml; charset=UTF-8');

Discussions similaires

  1. [XML::Twig] vs [XML::Writer]
    Par ellgafsi dans le forum Modules
    Réponses: 1
    Dernier message: 06/05/2009, 14h13
  2. [XSLT] Xml validé XSD puis transformé via XSLT
    Par cash3000 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 16/06/2006, 12h09
  3. [XML - CSS - XSLT] Non-transformation ET non-mise en forme !?
    Par ghohm dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 18/05/2006, 17h44
  4. pb d'ajout du module XML-Writer
    Par peppena dans le forum Modules
    Réponses: 4
    Dernier message: 04/05/2006, 18h10
  5. [XSL / XML] Conserver un espace entre deux entités
    Par alkolo dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 29/03/2006, 14h26

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