转载:http://aguu125.iteye.com/blog/580766
项目EDI里有一个写xslt解析xml并输出xml的功能
xslt里有调用到java类方法,测试不方便就上网找了些资料
用java类来调用xslt进行解析并输出
所用的jar库
1.Apache xalan-j_2_7_0
新建一个java类项目
加入以下jar包
引用
xml-apis.jar
serializer.jar
xercesImpl.jar
xalan.jar
xalansamples.jar
新建一个调用解析类(与例子程序SimpleTransform类一样)
-
package
com.aguu.translate;
-
-
import
java.io.FileNotFoundException;
-
import
java.io.FileOutputStream;
-
import
java.io.IOException;
-
-
import
javax.xml.transform.Transformer;
-
import
javax.xml.transform.TransformerConfigurationException;
-
import
javax.xml.transform.TransformerException;
-
import
javax.xml.transform.TransformerFactory;
-
import
javax.xml.transform.stream.StreamResult;
-
import
javax.xml.transform.stream.StreamSource;
-
-
public
class
SimpleTrans {
-
-
public
static
void
main(String[] args)
-
throws
TransformerException, TransformerConfigurationException,
-
FileNotFoundException, IOException
-
{
-
-
-
-
-
TransformerFactory tFactory = TransformerFactory.newInstance();
-
-
-
-
-
Transformer transformer = tFactory.newTransformer(new
StreamSource(
"ECMCONTAINERREPAIR_2_IMIS_CNSHA_MAP.XSLT"
));
-
-
-
-
transformer.transform(new
StreamSource(
"AUTO-IMIS_ER_EXCEL_FROMAT_2007032E.xls.xml"
),
new
StreamResult(
new
FileOutputStream(
"result.xml"
)));
-
-
System.out.println("************* The result is in birds.out *************"
);
-
}
-
}
package com.aguu.translate;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
public class SimpleTrans {
public static void main(String[] args)
throws TransformerException, TransformerConfigurationException,
FileNotFoundException, IOException
{
// Use the static TransformerFactory.newInstance() method to instantiate
// a TransformerFactory. The javax.xml.transform.TransformerFactory
// system property setting determines the actual class to instantiate --
// org.apache.xalan.transformer.TransformerImpl.
TransformerFactory tFactory = TransformerFactory.newInstance();
// Use the TransformerFactory to instantiate a Transformer that will work with
// the stylesheet you specify. This method call also processes the stylesheet
// into a compiled Templates object.
Transformer transformer = tFactory.newTransformer(new StreamSource("ECMCONTAINERREPAIR_2_IMIS_CNSHA_MAP.XSLT"));
// Use the Transformer to apply the associated Templates object to an XML document
// (foo.xml) and write the output to a file (foo.out).
transformer.transform(new StreamSource("AUTO-IMIS_ER_EXCEL_FROMAT_2007032E.xls.xml"), new StreamResult(new FileOutputStream("result.xml")));
System.out.println("************* The result is in birds.out *************");
}
}
解析类就完成了。。。
=========================================
xml,xslt编写
xslt中引入java类
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="class所在文件夹" exclude-result-prefixes="java">
命名空间java了,所在类路径可以是相对或绝对,如:d://com/package或是“com.package”
注意:使用可选属性xsl:exclude-result-prefixes,预防了java命名空间被包括到结果文件中。
调用:
-
-
<xsl:value-of select="java:类.方法"
/>
-
<xsl:if
test=
"java:类.方法"
/>
-
-
〈xsl:value-of select="java:Reverse.reverse(´This is a test´)"
/〉 <!--静态变量-->
-
〈xsl:value-of select="java:Reverse.reverse(./Description)"
/〉<!--元素值-->
-
〈xsl:value-of select="java:Reverse.reverse($varString)"
/〉<!--定义的变量-->
-
-
<xsl:variable name="funvalue"
select=
"mynspace.classname.new()"
/>
//这里是静态方法
<xsl:value-of select="java:类.方法"/>
<xsl:if test="java:类.方法"/>
//如果有参数,String类型
〈xsl:value-of select="java:Reverse.reverse(´This is a test´)" /〉 <!--静态变量-->
〈xsl:value-of select="java:Reverse.reverse(./Description)" /〉<!--元素值-->
〈xsl:value-of select="java:Reverse.reverse($varString)" /〉<!--定义的变量-->
//如果需要实例化类(尚未跑通)
<xsl:variable name="funvalue" select="mynspace.classname.new()"/>
杯具了,发现Eclipse3.5的javaee版本自身就带了个xslt转换的插件还可以debugg。。
分享到:
相关推荐
通过XSLT调用Java,我们可以利用Java的强大功能来处理XML数据,比如数据库操作、加密解密、日期时间处理等。 **XSLT调用Java的方式主要有两种:** 1. **Xalan扩展(XSLT Processor Extensions)** - Xalan是...
`apache-xml-xalan.jar`是这个库的Java归档(JAR)文件,它包含了执行XSLT转换所需的所有类和资源。JAR文件是Java平台的标准打包方式,它可以将多个类文件和其他相关资源打包在一起,便于分发和执行。 在Java项目中...
1. **创建Java类**:编写一个Java类,该类实现`javax.xml.transform.dom.DOMSource`接口或继承`org.apache.xpath.functions.Function`类。这样做的目的是为了让Java函数能够被XSLT解释器识别和调用。在这个类中,...
Xalan-Java是Apache软件基金会的一个开源项目,它是XSLT处理器的实现,用于将XML文档转换成其他格式,如HTML、PDF或纯文本。XSLT(XSL Transformations)是一种W3C标准,用于将XML数据按照XSL样式表转换为新的XML或...
3. **执行转换**:通过Java代码调用Xalan的API,例如`TransformerFactory`和`Transformer`类,加载XSL文件并执行转换。 4. **处理结果**:转换完成后,可以将结果输出到文件、控制台或者直接在内存中处理。 **site...
Xalan是Apache软件基金会开发的一个开源项目,主要关注XML(可扩展标记语言)转换,它提供了XSLT(XSL转换)处理器。XSLT是一种用于将XML文档转换为其他形式,如HTML、PDF或者纯文本的语言。Xalan 2.7.2是该项目的...
### Java 扩展 XSLT 的...无论是通过配置不同的XSLT处理器实现还是直接在XSLT中嵌入Java代码,都能够帮助我们更加灵活地处理XML数据。这种扩展性不仅提高了XSLT的应用范围,也为开发人员提供了更多的工具和技术选择。
例如,使用Apache Project的Xalan Java转换引擎,需要定义`<lxslt:component>`元素,并设置相应的前缀和扩展功能,如`extension-element-prefixes="result"`。此外,`<lxslt:script>`元素用于封装JavaScript代码,...
Xalan-Java是Apache软件基金会的项目,它提供了一个高效的API,使得开发者可以在Java应用程序中直接处理XML和XSLT。这个处理器支持XSLT 1.0和XSLT 2.0规范,可以处理复杂的转换逻辑,包括元素和属性的选择、排序、...
JAXP的可插拔层设计允许它与不同的XML解析器(如Apache Xerces)和XSLT处理器(如Apache Xalan)配合工作,只需关注JAXP的接口,而无需深入理解具体实现。 对于初学者,一个常见问题是:在使用JAXP更新DOM Tree后,...
这个库包含了处理XSLT转换所需的类和方法,如`org.apache.xalan.transformer.TransformerImpl`,它是实际进行转换的核心类。 2. **serializer.jar**: `serializer.jar`是Apache Xerces项目的一部分,提供了XML...
在描述中提到的"xalan.jar"是Xalan-Java的核心库文件,包含了所有必要的类和方法,使得开发者可以在Java应用程序中直接调用Xalan的功能。这个JAR文件可以被添加到项目的类路径中,以便在代码中使用Xalan进行XML处理...
2. **xalan.jar**:Xalan是Apache软件基金会的一个开源项目,它实现了XSLT(XSL Transformations)规范,用于转换XML文档到其他XML、HTML或文本格式。Xalan-Java是Xalan的一个实现,包含了编译和执行XSL样式表的类。...
开发工具如Apache Xalan、Saxon等可以帮助开发者编写和测试XSLT样式表。 总结来说,XSLT和XML的结合为数据处理提供了一种强大的方法。XML文件用于存储和组织数据,而XSLT文件则提供了将这些数据转换成其他格式(如...
4. **执行转换**:调用`Transformer`的`transform`方法,传入源XML和目标输出流。 5. **处理结果**:转换完成后,可以从目标输出流获取转换后的结果。 **Xalan与其他XML工具的对比** Xalan与Saxon、JAXB等其他XML...
Xalan是Apache软件基金会的一个项目,提供了XSLT和XSL-FO处理器的实现。在进行XSLT的实际操作前,需要安装Xalan或其他支持XSLT的处理器。这通常涉及到下载并配置相关的软件包,确保开发环境能够运行XSLT转换任务。 ...
Xalan-Java是Apache软件基金会的一个项目,它实现了W3C的XSLT 1.0和2.0规范,使得开发者可以使用Java语言处理XML数据。 在Xalan-Java中,"分割功能"可能指的是它的能力将一个大的XML文档拆分成多个小的文档,或者...
在Java开发领域,Xalan是一个不可或缺的名字,它是Apache软件基金会开发的一款强大的XSLT处理器,用于处理XML文档的转换。这个名为"xalan.jar"的文件,正是Xalan的核心组件,它包含了执行XSL(可扩展样式表语言)到...
Java调用XSL(XSL Transformations)是将XML数据转换为其他格式,如HTML、PDF或纯文本的常见技术。XSL是一种样式表语言,用于描述如何将XML文档呈现出来。在Java中,我们可以使用Java API for XML Processing (JAXP)...
Xalan-J是Apache软件基金会开发的一个开源项目,它主要提供了一个Java实现的XSLT(XSL Transformations)处理器,用于将XML文档转换为其他格式,如HTML、PDF或纯文本。Xalan-J包括两个主要组件:xalan.jar和...