项目xnowi基于一个简单的概念,通过XML和XSLT将内容与展示分离。一个XML文件和多个XSL文件可以生成许多不同的结果,不全是视觉的。

dev-master 2020-02-29 19:18 UTC

This package is auto-updated.

Last update: 2024-09-29 05:29:04 UTC


README

项目xnowi基于一个简单的概念,通过XML和XSLT将内容与展示分离。一个XML文件和多个XSL文件可以生成许多不同的结果,不全是视觉的。

Xnowi是一个库,您可以将它包含到您的项目中,并调用方法通过XSL转换XML以生成源的新版本。

您可以使用Xnowi展示演示网站

示例

您可以在以下仓库中查看使用示例 Xnowi_PHP_Example

安装

使用composer安装xnowi (https://packagist.org.cn/packages/magicianred/xnowi)

composer require magicianred/xnowi

基本使用

XML数据文件示例

<?xml version="1.0" encoding="ISO-8859-1" ?>
<website>
  <name>Xs.WebUI</name>
  <denomination>xnowi not only web interface</denomination>
  <slogan>free software per realizzare siti con output multipli</slogan>
</website>

XSLT文件示例

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  
  <xsl:param name="isLoggin">0</xsl:param>
  <xsl:param name="username">Ospite</xsl:param>
  <xsl:param name="language">it</xsl:param>
  <xsl:param name="lang_mode">cookie</xsl:param>
  <xsl:param name="mode">web</xsl:param>
  <xsl:param name="path"></xsl:param>
  <xsl:param name="pathRoot"></xsl:param>
  <xsl:param name="pathTheme">themes/web/</xsl:param>
  <xsl:param name="extTheme">.php</xsl:param>
  <xsl:param name="pageName">index</xsl:param>
  <xsl:param name="pageExt">.php</xsl:param>
  <xsl:param name="urlRoot">http://simone.paolucci.name/xnowi/</xsl:param>
  
  <xsl:template match="/">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{$language}">
      <head>
        <xsl:call-template name="head" />
      </head>
      <body>
        <div id="header">
            <h1><strong><xsl:value-of select="//website/name" /></strong> <em>(<xsl:value-of select="//website/denomination" />)</em></h1>
            <p><xsl:value-of select="//website/slogan" /></p>
        </div>
      </body>
    </html>
  </xsl:template>

  <xsl:template name="head">
    <title>
      <xsl:value-of select="//website/name" /> -<xsl:value-of select="//website/denomination" /> 
    </title>
    <link type="text/css" rel="stylesheet" href="{$pathRoot}{$pathTheme}styles/web.css" media="screen" />
  </xsl:template>

</xsl:stylesheet>

您的PHP文件(以下示例的基础)

require_once __DIR__ . '/vendor/autoload.php'; // Autoload files using Composer autoload

use Xnowi\Engine as xnowiEngine;

$engine = new xnowiEngine();

$xmlPath = "/path/file.xml";
$xslPath = "/path/file.xsl";	

进行简单的XML -> XSL转换

echo $engine->xTransformSimple( $xmlPath, $xslPath );

带有参数(XSL样式表)的转换

$params = array(
    'isLoggin' => $isLoggin,
    'username' => $username,
    'language' => $engine->get_Lang()
    );

echo $engine->xTransformSimpleWithParams( $xmlPath, $xslPath, $Params );

带有内部化的转换

$xmlLangPath = "/path/langs/file.xml";	

echo $engine->xTransformIntlSimple( $xmlPath, $xslPath, $xmlLangPath);

带有参数(XSL样式表)和内部化的转换

$xmlLangPath = "/path/langs/file.xml";	

$params = array(
    'isLoggin' => $isLoggin,
    'username' => $username,
    'language' => $engine->get_Lang()
    );
    
echo $engine->xTransformIntlWithParams( $xmlPath, $xslPath, $xmlLangPath, $Params);

静态网站生成器

进行简单的带有输出的转换
$fileOutput = "/html/index.htm";
    
echo $engine->xTransformOtpSimple( $xmlPath, $xslPath, $fileOutput);
带有参数(XSL样式表)和输出的简单转换
$fileOutput = "/html/index.htm";

$params = array(
    'isLoggin' => $isLoggin,
    'username' => $username,
    'language' => $engine->get_Lang()
    );
    
echo $engine->xTransformOptSimpleWithParamsSimple( $xmlPath, $xslPath, $Params, $fileOutput);
带有参数(XSL样式表)和内部化的转换
$fileOutput = "/html/index.htm";

$xmlLangPath = "/path/langs/file.xml";	

$params = array(
    'isLoggin' => $isLoggin,
    'username' => $username,
    'language' => $engine->get_Lang()
    );
    
echo $engine->xTransformOptIntlWithParams( $xmlPath, $xslPath, $xmlLangPath, $Params, $fileOutput);

要求

  • PHP > 5.6
  • php.ini中的XSL扩展

关于版本0.2

这是项目的0.2版本(v.1版本仍可从SourceForge下载)在这个版本中引入了命名空间。