当前位置: 首页>>代码示例>>PHP>>正文


PHP XSLTProcessor::transformToURI方法代码示例

本文整理汇总了PHP中XSLTProcessor::transformToURI方法的典型用法代码示例。如果您正苦于以下问题:PHP XSLTProcessor::transformToURI方法的具体用法?PHP XSLTProcessor::transformToURI怎么用?PHP XSLTProcessor::transformToURI使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在XSLTProcessor的用法示例。


在下文中一共展示了XSLTProcessor::transformToURI方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: loadRecordHTML

function loadRecordHTML($recHMLFilename, $styleFilename)
{
    global $recID, $outputFilename;
    $recHmlDoc = new DOMDocument();
    $recHmlDoc->load($recHMLFilename);
    $recHmlDoc->xinclude();
    if (!$styleFilename) {
        return $recHmlDoc->saveHTMLFile($outputFilename);
    }
    $xslDoc = DOMDocument::load($styleFilename);
    $xslProc = new XSLTProcessor();
    $xslProc->importStylesheet($xslDoc);
    // set up common parameters for stylesheets.
    //	$xslProc->setParameter('','hbaseURL',HEURIST_BASE_URL);
    //	$xslProc->setParameter('','dbName',HEURIST_DBNAME);
    //	$xslProc->setParameter('','dbID',HEURIST_DBID);
    $xslProc->setParameter('', 'standalone', '1');
    $xslProc->transformToURI($recHmlDoc, $outputFilename);
}
开发者ID:beoutsports,项目名称:heurist-v3-1,代码行数:19,代码来源:publishHTMLForPublishedRecord.php

示例2: _processXsltViaPhp

 /**
  * Apply a process (xslt stylesheet) on an input (xml file) and save output.
  *
  * @param string $input Path of input file.
  * @param string $stylesheet Path of the stylesheet.
  * @param string $output Path of the output file. If none, a temp file will
  * be used.
  * @param array $parameters Parameters array.
  * @return string|null Path to the output file if ok, null else.
  */
 private function _processXsltViaPhp($input, $stylesheet, $output = '', $parameters = array())
 {
     if (empty($output)) {
         $output = tempnam(sys_get_temp_dir(), 'omk_');
     }
     try {
         $domXml = $this->_domXmlLoad($input);
         $domXsl = $this->_domXmlLoad($stylesheet);
     } catch (Exception $e) {
         throw new Exception($e->getMessage());
     }
     $proc = new XSLTProcessor();
     $proc->importStyleSheet($domXsl);
     $proc->setParameter('', $parameters);
     $result = $proc->transformToURI($domXml, $output);
     @chmod($output, 0640);
     // There is no specific message for error with this processor.
     if ($result === false) {
         $message = __('An error occurs during the xsl transformation of the file "%s" with the sheet "%s".', $input, $stylesheet);
         throw new OaiPmhStaticRepository_Exception($message);
     }
     return $output;
 }
开发者ID:Daniel-KM,项目名称:OaiPmhStaticRepository,代码行数:33,代码来源:ProcessXslt.php

示例3: generateExpressionProvider

 /**
  * Genearte expression providers
  * 
  * @param Object $serviceInfo   ServiceInfo Object
  * @param String $serviceOutDir Path of output-files for current service
  * @param String $serviceXslDir Path of xsl-files for generating providers
  * @param String $configFile    config file name
  *
  * @return void
  */
 public function generateExpressionProvider($serviceInfo, $serviceOutDir, $serviceXslDir, $configFile)
 {
     //DSExpression Provider Generation.
     if ($serviceInfo['queryProviderVersion'] == 2) {
         $xsl_path = $serviceXslDir . "/EDMXToDSExpressionProvider.xsl";
         $xslDoc = new DOMDocument();
         if (file_exists($xsl_path)) {
             if (!$xslDoc->load($xsl_path)) {
                 die("Error while loading xls file for Expression Provider.");
             }
         } else {
             die("Error: xls file for DSExpression provider generatior not found");
         }
         $proc = new XSLTProcessor();
         $proc->importStylesheet($xslDoc);
         $proc->setParameter('', 'serviceName', $this->options['serviceName']);
         $metadataDoc = new DOMDocument();
         $expressionProviderPath = $serviceOutDir . "/" . $this->options['serviceName'] . "DSExpressionProvider.php";
         if (file_exists($configFile)) {
             if (!$metadataDoc->load($configFile)) {
                 die("Error while loading service.config.xml file for " . "DSExpression provider.");
             }
         } else {
             die("Error: service.config.xml file is not found for " . "DSExpression Provider.");
         }
         $file = fopen($expressionProviderPath, "w");
         chmod($expressionProviderPath, 0777);
         $proc->transformToURI($metadataDoc, $expressionProviderPath);
         unset($xslDoc);
         unset($proc);
         unset($metadataDoc);
         system("PHP -l {$expressionProviderPath}  1> " . $serviceOutDir . "/msg.tmp 2>&1", $temp);
         unlink($serviceOutDir . "/msg.tmp");
         if ($temp == 0 or $temp == 127) {
             echo "\nDSExpressionProvider class has generated Successfully.";
         } else {
             //Throw exception
             $this->showUsage("Error in generation of  ExpressionProvider class ... \nPlease " . "check the syntax of file:" . $expressionProviderPath);
         }
     }
 }
开发者ID:gizur,项目名称:odatamysqlphpconnect,代码行数:51,代码来源:MySQLConnector.php

示例4: DOMDocument

$xsl = <<<EOB
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:php="http://php.net/xsl">
<xsl:output method="html" encoding="utf-8" indent="yes"/>
 <xsl:template match="allusers">
  <html><body>
    <h2>Users</h2>
    <table>
    <xsl:for-each select="user">
      <tr><td>
        <xsl:value-of
             select="php:function('ucfirst',string(uid))"/>
      </td></tr>
    </xsl:for-each>
    </table>
  </body></html>
 </xsl:template>
</xsl:stylesheet>
EOB;
$xmldoc = new DOMDocument('1.0', 'utf-8');
$xmldoc->loadXML($xml);
$xsldoc = new DOMDocument('1.0', 'utf-8');
$xsldoc->loadXML($xsl);
$proc = new XSLTProcessor();
$proc->registerPHPFunctions();
$proc->importStyleSheet($xsldoc);
$uri = 'php://output';
echo $proc->transformToURI($xsldoc, $uri, 'stringValue');
开发者ID:gleamingthecube,项目名称:php,代码行数:30,代码来源:ext_xsl_tests_xsltprocessor_transformToURI_wrongparam_004.php

示例5: generateProxy

 /**
  * Generate the proxy class
  *
  */
 public function generateProxy()
 {
     $this->_validateAndBuidOptions();
     // replace a PHP.ini requirement with a sensible alternative
     $xsl_path = dirname(__FILE__);
     $xslDoc = new DOMDocument();
     $xslDoc->load($xsl_path . '/' . 'Common/WCFDataServices2PHPProxy.xsl');
     $proc = new XSLTProcessor();
     $proc->importStylesheet($xslDoc);
     $proc->setParameter('', 'DefaultServiceURI', $this->_options['/uri_withoutSlash']);
     $this->_metadataDoc = new DOMDocument();
     if (!empty($this->_options['/metadata'])) {
         $this->_metadataDoc->load($this->_options['/metadata']);
     } else {
         $metadata = $this->_getMetaDataOverCurl();
         $this->_metadataDoc->loadXML($metadata);
     }
     return $proc->transformToURI($this->_metadataDoc, $this->_options['/out_dir'] . '/' . $this->_getFileName());
 }
开发者ID:silviogarbes,项目名称:phpodata,代码行数:23,代码来源:PHPDataSvcUtil.php

示例6: transmitCCD

 public function transmitCCD($data = array())
 {
     $appTable = new ApplicationTable();
     $ccda_combination = $data['ccda_combination'];
     $recipients = $data['recipients'];
     $xml_type = $data['xml_type'];
     $rec_arr = explode(";", $recipients);
     $d_Address = '';
     foreach ($rec_arr as $recipient) {
         $config_err = "Direct messaging is currently unavailable." . " EC:";
         if ($GLOBALS['phimail_enable'] == false) {
             return "{$config_err} 1";
         }
         $fp = \Application\Plugin\Phimail::phimail_connect($err);
         if ($fp === false) {
             return "{$config_err} {$err}";
         }
         $phimail_username = $GLOBALS['phimail_username'];
         $phimail_password = $GLOBALS['phimail_password'];
         $ret = \Application\Plugin\Phimail::phimail_write_expect_OK($fp, "AUTH {$phimail_username} {$phimail_password}\n");
         if ($ret !== TRUE) {
             return "{$config_err} 4";
         }
         $ret = \Application\Plugin\Phimail::phimail_write_expect_OK($fp, "TO {$recipient}\n");
         if ($ret !== TRUE) {
             //return("Delivery is not allowed to the specified Direct Address.") ;
             $d_Address .= ' ' . $recipient;
             continue;
         }
         $ret = fgets($fp, 1024);
         //ignore extra server data
         if ($requested_by == "patient") {
             $text_out = "Delivery of the attached clinical document was requested by the patient";
         } else {
             if (strpos($ccda_combination, '|') !== false) {
                 $text_out = "Clinical documents are attached.";
             } else {
                 $text_out = "A clinical document is attached";
             }
         }
         $text_len = strlen($text_out);
         \Application\Plugin\Phimail::phimail_write($fp, "TEXT {$text_len}\n");
         $ret = @fgets($fp, 256);
         if ($ret != "BEGIN\n") {
             \Application\Plugin\Phimail::phimail_close($fp);
             //return("$config_err 5");
             $d_Address .= ' ' . $recipient;
             continue;
         }
         $ret = \Application\Plugin\Phimail::phimail_write_expect_OK($fp, $text_out);
         if ($ret !== TRUE) {
             //return("$config_err 6");
             $d_Address .= $recipient;
             continue;
         }
         $elec_sent = array();
         $arr = explode('|', $ccda_combination);
         foreach ($arr as $value) {
             $query = "SELECT id FROM  ccda WHERE pid = ? ORDER BY id DESC LIMIT 1";
             $result = $appTable->zQuery($query, array($value));
             foreach ($result as $val) {
                 $ccda_id = $val['id'];
             }
             $refs = $appTable->zQuery("select t.id as trans_id from ccda c inner join transactions t on (t.pid = c.pid and t.date = c.updated_date) where c.pid = ? and c.emr_transfer = 1 and t.title = 'LBTref'", array($value));
             if ($refs->count() == 0) {
                 $trans = $appTable->zQuery("select id from transactions where pid = ? and title = 'LBTref' order by id desc limit 1", array($value));
                 $trans_cur = $trans->current();
                 $trans_id = $trans_cur['id'] ? $trans_cur['id'] : 0;
             } else {
                 foreach ($refs as $r) {
                     $trans_id = $r['trans_id'];
                 }
             }
             $elec_sent[] = array('pid' => $value, 'map_id' => $trans_id);
             $ccda = $this->getFile($ccda_id);
             $xml = simplexml_load_string($ccda);
             $xsl = new \DOMDocument();
             $xsl->load(dirname(__FILE__) . '/../../../../../public/xsl/ccda.xsl');
             $proc = new \XSLTProcessor();
             $proc->importStyleSheet($xsl);
             // attach the xsl rules
             $outputFile = sys_get_temp_dir() . '/out_' . time() . '.html';
             $proc->transformToURI($xml, $outputFile);
             $htmlContent = file_get_contents($outputFile);
             if ($xml_type == 'html') {
                 $ccda_file = htmlspecialchars_decode($htmlContent);
             } elseif ($xml_type == 'pdf') {
                 $dompdf = new DOMPDF();
                 $dompdf->load_html($htmlContent);
                 $dompdf->render();
                 //$dompdf->stream();
                 $ccda_file = $dompdf->output();
             } elseif ($xml_type == 'xml') {
                 $ccda_file = $ccda;
             }
             //get patient name in Last_First format (used for CCDA filename)
             $sql = "SELECT pid, id, lname, fname, mname, providerID, DATE_FORMAT(DOB,'%m/%d/%Y') as DOB_TS FROM patient_data WHERE pid = ?";
             $result = $appTable->zQuery($sql, array($value));
             foreach ($result as $val) {
                 $patientData[0] = $val;
//.........这里部分代码省略.........
开发者ID:juggernautsei,项目名称:openemr,代码行数:101,代码来源:EncountermanagerTable.php

示例7: DOMDocument

<?php

$xslt = 'cours_audio.xsl';
if ($_GET['in'] != null) {
    $input = $_GET['in'];
} else {
    $input = 'cours_audio.xml';
}
if ($_GET['out'] != null) {
    $output = $_GET['out'];
} else {
    $output = 'cours_audio.html';
}
// Chargement du document XML
$xml = new DOMDocument();
$xml->load('xslt/' . $input);
// Chargement de la feuille de style
$xsl = new DOMDocument();
$xsl->load('xslt/' . $xslt);
// Création du processeur XSLT
$proc = new XSLTProcessor();
//Affectation de la feuille de style
$proc->importStyleSheet($xsl);
// Transformation du document XML selon la feuille XSL
$proc->transformToURI($xml, "./" . $output);
if ($proc != FALSE) {
    echo "transformation réussie.";
}
开发者ID:astorije,项目名称:projet-nf29-a10,代码行数:28,代码来源:exec_xslt_audio.php

示例8: XSLTProcessor

if (!isset($pageProperties->onentry) and $pageProperties->operation == 'change') {
    exit;
}
$xslt = new XSLTProcessor();
$xslDoc->load("../page/setter-pageController.xsl");
$xslt->importStylesheet($xslDoc);
$xslt->setParameter("", "onentry", json_encode($pageProperties->onentry));
$xslt->setParameter("", "newStateId", $pageProperties->uri);
$xmlDoc->load($baseDir . "data/controller-page.scxml");
if (strpos($pageProperties->operation, "insert") === 0) {
    $xpath = new DOMXpath($xmlDoc);
    $elements = $xpath->query("//*[@id='{$stateId}']");
    if (!is_null($elements->item(0))) {
        foreach ($pageProperties->onentry as $fields) {
            foreach ($fields as $field) {
                foreach ($field as $data) {
                    if (!is_file($baseDir . $data)) {
                        createArticle($baseDir . $data);
                    }
                }
            }
        }
        $xslt->setParameter("", "stateId", $elements->item(0)->parentNode->getAttribute("id"));
        $xslt->setParameter("", "operation", "append");
    }
} else {
    $xslt->setParameter("", "operation", $pageProperties->operation);
    $xslt->setParameter("", "stateId", $stateId);
}
$result = $xslt->transformToURI($xmlDoc, $baseDir . "data/controller-page.scxml");
开发者ID:hynekmusil,项目名称:hr-help,代码行数:30,代码来源:setter-menu.php

示例9: chr

<?php

$file = '/etc/passwd' . chr(0) . 'asdf';
$doc = new DOMDocument();
$proc = new XSLTProcessor();
var_dump($proc->setProfiling($file));
var_dump($proc->transformToURI($doc, $file));
开发者ID:RavuAlHemio,项目名称:hhvm,代码行数:7,代码来源:ext_xsl_null_byte.php

示例10: DOMDocument

<?php

// Load XSL template
$xsl = new DOMDocument();
$xsl->load(__DIR__ . '/stylesheet.xsl');
// Create new XSLTProcessor
$xslt = new XSLTProcessor();
// Load stylesheet
$xslt->importStylesheet($xsl);
// Load XML input file
$xml = new DOMDocument();
$xsl->load(__DIR__ . '/address-book.xml');
// Transform to string
$results = $xslt->transformToXML($xml);
// Transform to a file
$results = $xslt->transformToURI($xml, 'results.txt');
// Transform to DOM object
$results = $xslt->transformToDoc($xml);
开发者ID:zmwebdev,项目名称:PHPcookbook-code-3ed,代码行数:18,代码来源:xslt-transform1.php

示例11: realpath

 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
 * @category    Application
 * @author      Edouard Simon <edouard.simon@zib.de>
 * @copyright   Copyright (c) 2014, OPUS 4 development team
 * @license     http://www.gnu.org/licenses/gpl.html General Public License
 * @version     $Id$
 */
/**
 * This script takes a doctype XML-definition as input and spills out the 
 * PHP instructions for use in the corresponding .phtml file.
 * It requires the file doctype.xslt to be in the same directory as this script.
 */
if ($argc == 2) {
    $filename = realpath($argv[1]);
    if (!is_file($filename)) {
        echo "Could not find file {$argv[1]} ({$filename})";
        exit;
    }
} else {
    echo "No file supplied";
    exit;
}
$xml = new DOMDocument();
$xml->load($filename);
$xslt = new DomDocument();
$xslt->load(dirname(__FILE__) . "/doctype.xslt");
$proc = new XSLTProcessor();
$proc->importStyleSheet($xslt);
$proc->transformToURI($xml, 'php://output');
开发者ID:belapp,项目名称:opus4-application,代码行数:30,代码来源:create_doctype-phtml_from_xml.php

示例12: generateProxy

 /**
  * Generate the proxy class
  *
  */
 public function generateProxy()
 {
     $this->_validateAndBuidOptions();
     $xsl_path = get_cfg_var('ODataphp_path');
     if (strlen($xsl_path) == 0) {
         throw new Exception(self::$_messages['ServicePath_Not_Set']);
     }
     $xsl_path = $xsl_path . "/" . "Common/WCFDataServices2PHPProxy.xsl";
     $xslDoc = new DOMDocument();
     $xslDoc->load($xsl_path);
     $proc = new XSLTProcessor();
     $proc->importStylesheet($xslDoc);
     $proc->setParameter('', 'DefaultServiceURI', $this->_options['/uri_withoutSlash']);
     $this->_metadataDoc = new DOMDocument();
     if (!empty($this->_options['/metadata'])) {
         $this->_metadataDoc->load($this->_options['/metadata']);
     } else {
         $metadata = $this->_getMetaDataOverCurl();
         $this->_metadataDoc->loadXML($metadata);
     }
     $proc->transformToURI($this->_metadataDoc, $this->_options['/out_dir'] . "/" . $this->_getFileName());
 }
开发者ID:zzzaaa,项目名称:odataphp,代码行数:26,代码来源:PHPDataSvcUtil.php

示例13: convertToXHTML

 /**
  * Converts the currently opened document to XHTML.
  *
  * This function does not modify the original document, but
  * modifications on the document will reflect on the result of
  * the conversion.
  *
  * You may want to call setXSLTransformation() and/or
  * setXSLOption() before calling this function to optimize the
  * result of the conversion for particular purposes.
  *
  * @param filename Filename of the resulting XHTML document.
  *
  * @return @c true if the document was successfully converted,
  *         @c false otherwise.
  *
  * @sa setXSLTransformation(), setXSLOption()
  */
 public function convertToXHTML($filename)
 {
     if ($this->filename == '') {
         trigger_error('No document was loaded for conversion to XHTML');
         return false;
     }
     $xslDocument = new DOMDocument();
     if ($xslDocument->load(LIBOPENDOCUMENT_PATH . "/xsl/{$this->xslTransformation}/document2xhtml.xsl") === false) {
         trigger_error('Could not open the selected XSL transformation');
         return false;
     }
     $xsltProcessor = new XSLTProcessor();
     if ($xsltProcessor->hasExsltSupport() == false) {
         trigger_error('EXSLT support in PHP is required for converting OpenDocument files');
         return false;
     }
     if ($this->package == false) {
         $sourceDocument = $this->metaDocument;
     } else {
         if ($this->xslOptions['export-objects'] == 'true') {
             $this->exportObjects(dirname($filename));
         }
         $preprocessXSLDocument = new DOMDocument();
         if (copy(LIBOPENDOCUMENT_PATH . "/xsl/package2document.xsl", "{$this->tmpdir}/package2document.xsl") === false || $preprocessXSLDocument->load("{$this->tmpdir}/package2document.xsl") === false) {
             trigger_error('Could not open the XSL transformation for pre-processing');
             return false;
         }
         $xsltProcessor->importStyleSheet($preprocessXSLDocument);
         $contentDocument = new DOMDocument();
         if ($contentDocument->load("{$this->tmpdir}/content.xml") == false) {
             trigger_error('Could not load content XML document');
             return false;
         }
         $xsltProcessor->setParameter('', 'mimetype', file_get_contents("{$this->tmpdir}/mimetype"));
         $sourceDocument = $xsltProcessor->transformToDoc($contentDocument);
         if ($sourceDocument === false) {
             trigger_error('Could not open source document');
             return false;
         }
         unlink("{$this->tmpdir}/package2document.xsl");
     }
     if (file_exists(LIBOPENDOCUMENT_PATH . "/xsl/{$this->xslTransformation}/document2xhtml.php") == true) {
         include_once LIBOPENDOCUMENT_PATH . "/xsl/{$this->xslTransformation}/document2xhtml.php";
         OpenDocument2XHTML::init($this->xslOptions);
         $xsltProcessor->registerPHPFunctions();
     }
     $xsltProcessor->importStyleSheet($xslDocument);
     foreach ($this->xslOptions as $key => $value) {
         $xsltProcessor->setParameter('', $key, $value);
     }
     if ($xsltProcessor->transformToURI($sourceDocument, $filename) == false) {
         trigger_error('XSL transformation failed to run');
         return false;
     }
     return true;
 }
开发者ID:hermancaldara,项目名称:buildout_portal_iff_plone3,代码行数:74,代码来源:OpenDocument.php

示例14: _processXsltViaPhp

 /**
  * Apply a process (xslt stylesheet) on an input (xml file) and save output.
  *
  * @param string $input Path of input file.
  * @param string $stylesheet Path of the stylesheet.
  * @param string $output Path of the output file. If none, a temp file will
  * be used.
  * @param array $parameters Parameters array.
  * @return string|null Path to the output file if ok, null else.
  */
 private function _processXsltViaPhp($input, $stylesheet, $output = '', $parameters = array())
 {
     if (empty($output)) {
         $output = tempnam(sys_get_temp_dir(), 'omk_');
     }
     try {
         $domXml = $this->_domXmlLoad($input);
         $domXsl = $this->_domXmlLoad($stylesheet);
     } catch (Exception $e) {
         throw new Exception($e->getMessage());
     }
     $proc = new XSLTProcessor();
     // Php functions are needed, because php doesn't use XSLT 2.0
     // and because we need to check existence of a file.
     if (get_plugin_ini('XmlImport', 'xml_import_allow_php_in_xsl') == 'TRUE') {
         $proc->registerPHPFunctions();
     }
     $proc->importStyleSheet($domXsl);
     $proc->setParameter('', $parameters);
     $result = $proc->transformToURI($domXml, $output);
     @chmod($output, 0640);
     return $result === FALSE ? NULL : $output;
 }
开发者ID:cheegunn,项目名称:XmlImport,代码行数:33,代码来源:IndexController.php

示例15: endsWith

            $addNewDir = false;
        }
    } else {
        $addNewDir = true;
    }
    if ($addNewDir == true) {
        $baseOutputDir .= "../";
        $newDir .= "/" . $uriArr[$i];
        if (!is_dir($newDir)) {
            mkdir($newDir);
        }
    }
}
$config = array("indent" => false, "output-xhtml" => true, "wrap" => 200);
$tidy = new tidy();
$tidy->parseString($html, $config, "utf8");
$tidy->cleanRepair();
$xmlDoc = new DOMDocument("1.0", "UTF-8");
$xmlDoc->loadXML(str_replace("&nbsp;", "&#160;", $tidy->body()->value));
$xslt = new XSLTProcessor();
$xslDoc = new DOMDocument();
$xslDoc->load("filter.xsl");
$xslt->importStylesheet($xslDoc);
$xslt->setParameter("", "title", $title);
$xslt->setParameter("", "baseOutputDir", $baseOutputDir);
$xslt->transformToURI($xmlDoc, $newDir . $newFile);
function endsWith($aFullStr, $aEndStr)
{
    $fullStrEnd = substr($aFullStr, strlen($aFullStr) - strlen($aEndStr));
    return $fullStrEnd == $aEndStr;
}
开发者ID:hynekmusil,项目名称:hr-help,代码行数:31,代码来源:publish.php


注:本文中的XSLTProcessor::transformToURI方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。