2016-12-07 146 views
-2

在我最近的項目中,我遇到了一種需要將XSLt轉換爲XML的情況 - 我可以這樣做嗎?這可能如何?我可以將XSLT轉換爲XML嗎?

+2

xslt已經是xml – Kris

+0

我必須將該XSLT轉換爲XML,我該怎麼做? – Muhammad

+2

你**不需要**來轉換任何東西。 –

回答

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文件的路徑。輸出轉儲到標準輸出(控制檯,你開始它,或重定向到一個文件等)