在我最近的项目中,我遇到需要将XSLt转换为XML的情况 - 我可以这样做吗?这怎么可能?
答案 0 :(得分:0)
XSLT(可扩展样式表语言转换)是 XML(可扩展标记语言),它用于将其他XML转换为基本上任何类型的文本,通常是更多的XML。
大多数情况下,xml文档中的某些数据是通过使用xslt文档应用转换来生成输出来转换的。
例如;可以在xml数据文件中包含适合于计算机软件使用的书籍列表,以及能够将该书籍列表转换为更适合人类的html(或xhtml或...)文档的xslt样式表消耗。
这里有一些与xslt一起使用的示例代码,用于衡量标准:
#!/usr/bin/php -q
<?php
namespace XSLTProcessorTool
{
use DOMDocument;
use XSLTProcessor;
/**
* Class Processor: Process an xml file according to a stylesheet
*/
class Program
{
static function main(array $args)
{
if(count($args) >= 3)
{
/** @noinspection PhpUnusedLocalVariableInspection Intentionally ignoring the first element here */
$programFile = array_shift($args);
$xmlFile = array_shift($args);
$xslFile = array_shift($args);
$xml = new DOMDocument();
if (false != ($xml->load($xmlFile)))
{
$xsl = new DOMDocument();
if (false != ($xsl->load($xslFile)))
{
$transformer = new XSLTProcessor();
$transformer->importStylesheet($xsl);
$result = $transformer->transformToXml($xml);
fputs(STDOUT, $result);
}
else
{
self::reportFatalError(sprintf('Unable to read XSL from %s', $xslFile));
}
}
else
{
self::reportFatalError(sprintf('Unable to read XML from %s', $xmlFile));
}
}
else
{
self::reportFatalError('Need at 2 parameters representing an xml file and the xsl sheet to transform it with.');
}
}
/**
* Log an error message and exit.
*
* @param $message
*/
private static function reportFatalError($message)
{
fputs(STDERR, $message);
die(1);
}
}
// usage: php -q xslt.php data.xml stylesheet.xslt > output.xml
/** @var $argv array containing commandline arguments */
Program::main($argv);
}
#EOF
这是一个带有两个参数的命令行工具; xml数据文件的路径和xslt文件的路径。输出被转储到stdout(从它启动的控制台,或重定向到文件等)。