<%-- JSP全站自动生成HTML下载新闻系统 V3.1 作者:JSP天空网站长 曹进 QQ:173241393 --%> 通过XSLT访问Java代码
 
用户名:
密码:
终身会员
  首页 网络文摘 技术专题 下载中心 JSP培训 公司产品 JSP虚拟主机 技术论坛 会员 JSP免费空间  
  技术文摘: JSP基础 | JSP高级 | JSP环境 | JAVA基础 | JAVA高级 | JAVA工具 | JAVA数据库 | WEB框架 | XML相关 | JAVA考试 | J2EE相关 | J2ME相关 |
  视频下载: 程序设计数据库相关教程计算机基础教程图形图像网络技术网络安全时空书库EasyShop虚拟主机JSP培训技术论坛
  书籍教程: JSP教程Java教程图像软件XML教程数据库教程网页教程工具软件服务器相关ASP教程PHP教程CGI教程.NET教程
  代码下载: ASP代码下载JSP代码下载PHP代码下载CGI代码下载Flash代码C/C++/VCPowerBuilderDelphiVisualBasicVisualFoxpro
您的位置: 首页 -> 文章分类 -> XML相关 -> 通过XSLT访问Java代码
 文摘搜索
 
 文摘资源分类
 
 文摘总排行榜TOP10
 
 最新更新文摘TOP10
 

通过XSLT访问Java代码

[来源]管理员   [作者]网络文摘    [时间]2005-11-10
推荐等级: 点击:
假如你希望将XML数据转换为固定宽度和纯文本的字符串――这刚好是XSLT不太方便实现的一个特性,或者,也许你希望在XML文件中执行词语替换。在这些情况下,当你的事务超出了XSLT自身的处理能力时,可以通过在你的XSLT处理器中调用Java函数来完成。

我看到过利用类似VBScript和Jscript的脚本语言完成特殊处理的例子(针对微软解析器的),但是如何利用Java来执行特殊的处理还不是特别地明显。尽管如此,简单地说,可以在XSLT处理器中通过XML命名空间(namespaces)调用Java函数来实现。Java与XSLT的结合为构建健壮的应用程序提供了强有力的方法。

使用定制的命名空间
命名空间是通过使用统一资源标识符(URI)来修饰限定XSL中元素和属性名称的一种方法。例如,常见的XSL元素需要有xsl命名空间前缀来修饰,xsl通过使用XSLT命名空间URI来声明:

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

但是并不局限于使用XSLT命名空间,你完全可以自由地声明你自己定制的命名空间,并用它们来识别定制的XSLT标签和范围。

你必须使用定制的命名空间前缀来完成对外部函数的调用,例如,mynspace:fundtion(),该命名空间前缀mynspace,必须与一个命名空间URI相关联,例如:

xmlns:myspace="d:///XMLprogs/mynamespace"

一般的Java绑定使用命名空间URI标识Java类函数的位置。对用于本文示例代码的Xalan XSLT处理器(版本1.2.2)来说,命名空间URI必须具有URI-stem/packagename的形式。如果你使用了XT,那么你的命名空间应该有如下格式:

xmlns:mynspace="d://XMLprogs/mynamespace.myclassname

这种情况下,你可以使用XSLT代码调用来自myclassname的Java函数。

绑定外部Java函数
此处给出在XSLT模板内部绑定Java语言编写的外部函数的过程。

将你自己定制的命名空间作为它们的属性添加到样式表(stylesheet)元素或者你的模板中。
确保你的Java类文件所在目录位于你的XSLT处理器所运行的Java虚拟机(JVM)的CLASSPATH中。
对于静态方法,可以使可以用完全合格的类名称加上方法和任何必需的的参数,当然还有命名空间前缀。
对于非静态方法,首先创建类实例,然后调用该方法并提供任何必需的参数。
例如,下面的样式表元素包含一个定制的命名空间声明:




在声明了这个命名空间后,可以访问该类的任何静态方法,像这样:



如果方法不是静态的,那么必须首先调用类构造器,例如:





Java包"mynamespace"必须位于"d://XMLprogs"目录中。

注意:使用可选属性xsl:exclude-result-prefixes,预防了java命名空间被包括到结果文档中。











上面的XSLT代码中,行调用位于mynamespace包中名为DateClass的类的静态方法displayDate()。

利用这种技术,你可以调用任何Java类方法――包括那些需要参数的方法――参数来自于你的XSLT模板。

本文涉及的代码:date.xsl















DateClass.java

packagemynamespace;
importjava.util.Date;
public class DateClass{
public static String displayDate(){
Date d = new Date();
returnd.toString();
}
}

要运行这些代码,需要:

创建文件夹"d:\XMLProgs\mynamespace"。
将DateClass.java文件放入上述路径并编译得到DateClass.class文件。
将"d:\XMLProgs\mynamespace"放入classpath变量中。
利用XSLT处理器,例如XT或XALAN将该XSL文件和具体的XML文件关联。
[收藏][打印][关闭]
在线咨询服务 在线咨询服务 在线咨询服务 在线咨询服务
Copyright©2005-2006陕西思远数码科技有限责任公司 服务电话:029-88212987 传真:029-88278265 售后服务QQ:173241393
地址:陕西省西安市吉祥路186号太白新苑C座2104 陕ICP备05004508号