function generate($schema, $xsl_stylesheet_name = 'plain', $parameters = array()) { // generate types document, describing type constraints $types_serializer = new ConfigDoc_XMLSerializer_Types(); $types_document = $types_serializer->serialize($schema); $types_document->save(dirname(__FILE__) . '/../types.xml'); // only ONE // generate configdoc.xml, documents configuration directives $schema_serializer = new ConfigDoc_XMLSerializer_ConfigSchema(); $schema_document = $schema_serializer->serialize($schema); $schema_document->save('configdoc.xml'); // setup transformation $xsl_stylesheet = dirname(__FILE__) . "/../styles/{$xsl_stylesheet_name}.xsl"; $xslt_processor = new ConfigDoc_HTMLXSLTProcessor(); $xslt_processor->setParameters($parameters); $xslt_processor->importStylesheet($xsl_stylesheet); return $xslt_processor->transformToHTML($schema_document); }
// Hijack page generation to supply documentation if (file_exists('test-schema.html') && !isset($_GET['purge'])) { echo file_get_contents('test-schema.html'); exit; } $style = 'plain'; $configdoc_xml = 'test-schema.xml'; $xml_builder = new HTMLPurifier_ConfigSchema_Builder_Xml(); $xml_builder->openURI($configdoc_xml); $xml_builder->build($interchange); unset($xml_builder); // free handle $xslt = new ConfigDoc_HTMLXSLTProcessor(); $xslt->importStylesheet("../configdoc/styles/{$style}.xsl"); $xslt->setParameters(array('css' => '../configdoc/styles/plain.css')); $html = $xslt->transformToHTML($configdoc_xml); unlink('test-schema.xml'); file_put_contents('test-schema.html', $html); echo $html; exit; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>HTML Purifier Config Form Smoketest</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" href="../library/HTMLPurifier/Printer/ConfigForm.css" type="text/css" /> <script defer="defer" type="text/javascript" src="../library/HTMLPurifier/Printer/ConfigForm.js"></script>
$interchange = new HTMLPurifier_ConfigSchema_Interchange(); $builder->buildDir($interchange); $loader = dirname(__FILE__) . '/../config-schema.php'; if (file_exists($loader)) { include $loader; } $interchange->validate(); $style = 'plain'; // use $_GET in the future, careful to validate! $configdoc_xml = dirname(__FILE__) . '/configdoc.xml'; $xml_builder = new HTMLPurifier_ConfigSchema_Builder_Xml(); $xml_builder->openURI($configdoc_xml); $xml_builder->build($interchange); unset($xml_builder); // free handle $xslt = new ConfigDoc_HTMLXSLTProcessor(); $xslt->importStylesheet(dirname(__FILE__) . "/styles/{$style}.xsl"); $output = $xslt->transformToHTML($configdoc_xml); if (!$output) { echo "Error in generating files\n"; exit(1); } // write out file_put_contents(dirname(__FILE__) . "/{$style}.html", $output); if (php_sapi_name() != 'cli') { // output (instant feedback if it's a browser) echo $output; } else { echo "Files generated successfully.\n"; } // vim: et sw=4 sts=4