使用Xalan进行XSLT程序设计
--使用Java扩展XSL
- 什么时候需要进行XSLT程序设计
- 关于IE5和Mozilla的基本背景知识
- Tomcat和jdk1.3的配置
- 第一个使用Xalan的程序的例子
- 术语与背景知识
- 使用javascript及其他语言扩展XSL
- 使用java扩展XSL
- 使用Xalan的命令行工具
- 在Applet中使用Xalan
- 调试(debug)一个xslt文档
- XSLTC
- DTM
Xalan支持使用Java扩展XSLT。而且使用Java扩展XSLT不需要其他类库支持,因此使用Java扩展XSLT是一个很方便的选择。
下面我们就来详细讨论使用Java扩展xsl的方法。另外从使用javascript扩展我们也看到,javascript扩展很难应用于多个xsl文件,而用java进行扩展就可以非常容易地实现。
在使用java进行xsl扩展地时候,我们需要写一个java类。在这个类里面定义一些public地方法,这些方法等同与javascript中地函数。例如下面地例子,我们定义了一个叫做A的类,这个类中有两个public的方法,一个叫做out,这个用来实现out扩展element,另一个方法叫做displaySex,这个方法用来实现扩展方法displaySex。下面是代码。
package a;
import org.apache.xalan.extensions.XSLProcessorContext;
import org.apache.xalan.templates.ElemExtensionCall;
import org.apache.xalan.templates.ElemTemplateElement;
public class A{
public String out( XSLProcessorContext xslProcContext , ElemExtensionCall elmExtCall){
org.apache.xalan.transformer.TransformerImpl oTrsfImpl =
xslProcContext.getTransformer();
org.w3c.dom.NodeList oList = elmExtCall.getChildNodes();
try{
for( int i = 0 ; i < oList.getLength() ; i ++ ){
((ElemTemplateElement)oList.item(i)).execute(oTrsfImpl);
}
}catch(Exception e){
e.printStackTrace();
}
return ",吃了吗?";
}
public String displaySex( String strSex){
if( strSex.equals("m") ) return "先生";
else if( strSex.equals("f") ) return "女士";
else return strSex;
}
}
相应的,我们要对xsl文件进行一些调整,调整后的结果可见下面的代码。我们仅仅修改了script标签中的内容,把javascript变成了javaclass然后再加上一个src的属性,这个属性指向了A类,由于A类是在a包中的,我们还要加上a.,另外还要有一个前缀“xalan://"看上去好像是一种新的因特网协议。呵呵。代码如下:
你好