Section: Générer du XML quelconque
« Générer du texte brut | ^ Générer du contenu avec les vues | Générer un flux de syndication RSS » |
− Table des matières
jResponseXML permet de renvoyer au navigateur du XML. Son alias est "xml".
$rep = $this->getResponse('xml');
Le XML peut être renvoyé à partir d'un template, ou d'un contenu généré "à la main". Dans les deux cas, le XML doit être bien formé. Si ce n'est pas le cas, la réponse sera une erreur.
jResponseXml s'occupe de générer la balise <?xml ?>
donc vous n'avez pas à
vous en occuper, sauf si vous indiquez que vous vous en chargez :
$rep->sendXMLHeader = false;
Le type mime envoyé est par défaut text/xml
. Vous pouvez bien sûr
changer cela en appelant la méthode addHttpHeader
:
$rep->addHttpHeader('Content-Type', 'application/xml');
Générer à partir d'un template ¶
Par défaut, la propriété $content
contient un objet jTpl
. Vous devez
indiquer le sélecteur de template dans la propriété $contentTpl
.
$rep->contentTpl = 'monModule~monxml';
$rep->content->assign('foo','bla bla bla');
Génération sans template ¶
Si vous ne voulez pas utiliser un template, vous mettez le contenu xml, sous forme de chaine, dans la propriété $content.
$rep->content = '<mondoc> <title>jelix</title> </mondoc>';
Indiquer des feuilles de styles. ¶
Vous pouvez attacher des feuilles de styles CSS ou XSLT au document XML produit.
Pour cela, vous devez utilisez les méthodes addCSSStyleSheet()
ou
addXSLStyleSheet()
. Elles prennent toutes deux en premier argument l'url
du fichier, et en deuxième argument optionnel un tableau associatif définissant
les pseudo attributs à mettre sur la processing instruction générée.
$rep->addCSSStyleSheet('/my.css', array('title'=>'super jolie'));
$rep->addXSLStyleSheet('/my.xsl');
Note : comme pour la réponse HTML, vous pouvez indiquer des feuilles de styles qui soient stockées dans le www/ de l'application ou du module. Voir la documentation sur les vues HTML pour savoir comment récupérer ces URLs.