2.0模板解析引擎新功能——外部程序集使用

作者:动易网络 来源:本站原创 点击数: 更新时间:2008年12月26日
站点根目录下Config文件夹下新增的配置文件: ConsumerExtensionObject.config 是用于配置程序集的一个XML,默认的内容大致如下:

<?xml version="1.0" encoding="utf-8"?>

<ExtensionObject>

  <Object assembly="PowerEasy.SiteFactory.Bll.Templates" className="PowerEasy.SiteFactory.Bll.Templates.ConsumerExtensionObject" xmlns="http://www.powereasy.net" />

</ExtensionObject>


我们可以通过配置此文件,来扩展标签解析引擎的方法库。

1、 assembly 意为程序集:

程序集就是程序的集合,可以理解为一个项目中的一堆程序,一般一个项目是一个程序集,(理解成dll或exe也差不多)当然这是一个非常简单的理解。这个文件需要放在站点根目录的bin文件夹内。此参数的参数值为这个程序集的名称。

2.、 className 意为程序集的类名:

类是描述一组相似对象共有特征的抽象。例如,一个字符串帮助类(StringHelper)可以被创建来描述所有能实现字符串操作的对象。此参数的参数值为程序集的类名。

3、 xmlns 意为命名空间

文档的命名空间,是XML NameSpace的缩写。


这里我以一个完整的范例来讲解外部程序集在标签解析引擎中的用法。

(关于程序方面的知识,超出了本文所讲授的范围。下面的内容以C#讲授,如不能理解代码可参考《C#入门经典》一书)

开启Visual Studio新建一个项目,模板选择类库,项目名和解决方案取名为MyFunction选择好保存的位置后点击确定按钮。此主题如下:


图片点击可在新窗口打开查看

 

在编辑窗口,我们在默认的Class1类中增加三个方法,如下:

namespace MyFunction
{
public class Class1
{
public static string SayHello()
{
return "Hello PowerEasy";
}

public static double GetMultiply(double lhs, double rhs)
{
return lhs*rhs;
}

public static decimal ShowDecimalRound(decimal Argument, int Digits)
{
return decimal.Round(Argument, Digits);
}
}
}

 

第一个方法,用于显示一条信息

第二个方法,用于返回两个数的乘积

第三个方法,用于精确保留小数位

 

接下来我们,选择生成菜单的生成MyFunction,生成此程序集,此主题如下:


图片点击可在新窗口打开查看

 

这样便生成了一个MyFunction.dll的文件,我们将其复制到站点根目录下的bin目录中。

 

接下来我们需要配置本文开头提到的ConsumerExtensionObject.config文件了。如下:

<?xml version="1.0" encoding="utf-8"?>

<ExtensionObject>

  <Object assembly="PowerEasy.SiteFactory.Bll.Templates" className="PowerEasy.SiteFactory.Bll.Templates.ConsumerExtensionObject" xmlns="http://www.powereasy.net" />

<Object assembly="MyFunction" className=" MyFunction.Class1" xmlns=" MyFunction" />

</ExtensionObject>

注意:这里xmlns命名空间是可以随意取的,但标签中的命名空间必须与此处配置的命名空间相同。

 

至后台,系统设置→模板标签管理→标签管理,增加一个新的标签,类型选择简单XSLT解析,可不选择数据源,此主题如下:

 

在标签模板头部引入我们定义的命名空间,并且按照正确的方法签名调用即可。

如:

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:Test="MyFunction"

xmlns:pe="labelproc" exclude-result-prefixes="Test pe">

  <xsl:output method="html" indent="yes"/>

  <xsl:template match="/">

    <xsl:value-of select="Test:SayHello()"/>

    <xsl:value-of select="Test:GetMultiply(double lhs, double rhs)"/>

    <xsl:value-of select="Test:ShowDecimalRound(decimal Argument, int Digits)"/>

  </xsl:template>

</xsl:stylesheet>

 

调用方法为 命名空间名称+冒号+方法签名

 

至此我们完成了标签解析引擎对外部程序集的使用,对于高级用户,或者不满足与现在有的XSLT,XPATH,内置函数库,所提供的功能用户,通过这种外部程序集的方式,能够最大化的满足其心仪的功能和想法。让我们尽情的感受来自PowerEasy Xpower引擎的自由与强大吧!

33444
本篇文章的Tags:    模板解析  
如果以上内容未能解决您的问题,欢迎您到我们的讨论区发帖寻求帮助,我们的工作人员会热情为您解答。