/**
* Generate Fluid ViewHelper XSD Schema
*
* Generates Schema documentation (XSD) for your ViewHelpers, preparing the
* file to be placed online and used by any XSD-aware editor.
* After creating the XSD file, reference it in your IDE and import the namespace
* in your Fluid template by adding the xmlns:* attribute(s):
* <html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers" ...>
*
* @param string $phpNamespace Namespace of the Fluid ViewHelpers without leading backslash (for example 'Neos\FluidAdaptor\ViewHelpers'). NOTE: Quote and/or escape this argument as needed to avoid backslashes from being interpreted!
* @param string $xsdNamespace Unique target namespace used in the XSD schema (for example "http://yourdomain.org/ns/viewhelpers"). Defaults to "http://typo3.org/ns/<php namespace>".
* @param string $targetFile File path and name of the generated XSD schema. If not specified the schema will be output to standard output.
* @return void
*/
public function generateXsdCommand($phpNamespace, $xsdNamespace = null, $targetFile = null)
{
if ($xsdNamespace === null) {
$xsdNamespace = sprintf('http://typo3.org/ns/%s', str_replace('\\', '/', $phpNamespace));
}
$xsdSchema = '';
try {
$xsdSchema = $this->xsdGenerator->generateXsd($phpNamespace, $xsdNamespace);
} catch (Service\Exception $exception) {
$this->outputLine('An error occurred while trying to generate the XSD schema:');
$this->outputLine('%s', array($exception->getMessage()));
$this->quit(1);
}
if ($targetFile === null) {
$this->output($xsdSchema);
} else {
file_put_contents($targetFile, $xsdSchema);
}
}