La façon dont mon application est structurée, chaque composant génère une sortie en XML et renvoie un objet XmlWriter. Avant de rendre la sortie finale à la page, je combine tout le XML et effectue une transformation XSL sur cet objet. Ci-dessous, un exemple de code simplifié de la structure de l'application.Combinaison d'objets XmlWriter?
Est-il logique de combiner des objets XmlWriter comme ça? Y a-t-il une meilleure façon de structurer ma demande? La solution optimale serait celle où je n'aurais pas à passer une seule instance XmlWriter en tant que paramètre à chaque composant.
function page1Xml() {
$content = new XmlWriter();
$content->openMemory();
$content->startElement('content');
$content->text('Sample content');
$content->endElement();
return $content;
}
function generateSiteMap() {
$sitemap = new XmlWriter();
$sitemap->openMemory();
$sitemap->startElement('sitemap');
$sitemap->startElement('page');
$sitemap->writeAttribute('href', 'page1.php');
$sitemap->text('Page 1');
$sitemap->endElement();
$sitemap->endElement();
return $sitemap;
}
function output($content)
{
$doc = new XmlWriter();
$doc->openMemory();
$doc->writePi('xml-stylesheet', 'type="text/xsl" href="template.xsl"');
$doc->startElement('document');
$doc->writeRaw(generateSiteMap()->outputMemory());
$doc->writeRaw($content->outputMemory());
$doc->endElement();
$doc->endDocument();
$output = xslTransform($doc);
return $output;
}
$content = page1Xml();
echo output($content);
Mise à jour:
j'abandonner tout à fait XmlWriter et utiliser DomDocument à la place. Il est plus flexible et il a également semblé fonctionner mieux (au moins sur les tests bruts que j'ai créés).