首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

SMOOKS-XSL

2012-07-01 
SMOOKS--XSL1.简介?Smooks是一个用于出力XML和非XML数据(CVS,EDI,JAVA...)的JAVA可扩展框架。?主要有以下特

SMOOKS--XSL

1.简介

?

Smooks是一个用于出力XML和非XML数据(CVS,EDI,JAVA...)的JAVA可扩展框架。

?

主要有以下特性:

1)JAVA绑定:根据数据源(XML,CSV,EDI...)活得JAVA对象,亦可以实现JAVA对象到数据源的格式化。

2)转化:数据格式之间的转化,如XML-XML,CSV-XML...

3)大数据处理:能处理大型数据(GBs)-分割,转换,路由到JMS,文件,数据库等。

4)数据完整性填充:利用数据库等数据源填充数据。

5)复杂数据验证

6)基于ORM框架的数据存储:可以使用持久层框架(如Ibatis,Hibernate...)或者DAO读取或者存储数据。

7)可以将以上特性结合使用。

?

Smooks的工作是将结构化/层次化的数据流转变成“事件”流,然后交与“访问者逻辑(Visitor Logic)”进行分析,生成结果。而且Smooks本身提供了很多Vistor的实现来完成下面的功能:

1)JAVA绑定

2)数据分割和路由

3)大数据处理

?

本文将主要介绍Smooks通过XSL来实现XML之间的转换

?

2.结合XSL实现XML之间的转换

?

|-example

??? |-Xml2XmlXslTest.java

|-xslConfig.xml

|-xslConfig.xsl

|-input.xml

?

?xslConfig.xml

<?xml version="1.0"?><smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"xmlns:xsl="http://www.milyn.org/xsd/smooks/xsl-1.1.xsd"><xsl:xsl applyOnElement="Order">        <xsl:template>xslConfig.xsl</xsl:template>    </xsl:xsl></smooks-resource-list>

?

?xslConfig.xsl

<?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:preserve-space elements="*"/><xsl:template match="/Order"><ORDER><xsl:copy-of select="CUSTOMER" /><xsl:copy-of select="PAYMENT" /><ORDERITEM_LIST><xsl:for-each select="OrderItemList/OrderItem"><xsl:variable name="id"><xsl:value-of select="Product/Id"/></xsl:variable><xsl:choose><xsl:when test="Amount > 1"><ORDERITEM><PRODUCT><ID><xsl:value-of select="substring($id,3)"/></ID><NAME><xsl:value-of select="Product/Name"/></NAME><PRIZE><xsl:value-of select="Product/Prize"/></PRIZE></PRODUCT><AMOUNT><xsl:value-of select="Amount"/></AMOUNT></ORDERITEM></xsl:when><xsl:otherwise><ORDERITEM><PRODUCT><ID><xsl:value-of select="substring($id,3)"/></ID></PRODUCT></ORDERITEM></xsl:otherwise></xsl:choose></xsl:for-each></ORDERITEM_LIST></ORDER></xsl:template></xsl:stylesheet>

?

input.xml

?

<Order>    <CUSTOMER>        <username>USER</username>    </CUSTOMER>    <PAYMENT>        <PRIZE>300</PRIZE>    </PAYMENT>    <OrderItemList>        <OrderItem>            <Product>                <Id>001003</Id>                <NAME>book1</NAME>                <PRIZE>100</PRIZE>            </Product>            <Amount>2</Amount>        </OrderItem>        <OrderItem>            <Product>                <Id>001004</Id>                <NAME>book2</NAME>                <PRIZE>100</PRIZE>            </Product>            <Amount>1</Amount>        </OrderItem>    </OrderItemList></Order>

?

Xml2XmlXslTest.java

?

package example;import java.io.IOException;import javax.xml.transform.Result;import javax.xml.transform.Source;import javax.xml.transform.stream.StreamResult;import javax.xml.transform.stream.StreamSource;import org.milyn.Smooks;import org.xml.sax.SAXException;public class Xml2XmlXslTest {/** * @param args * @throws SAXException  * @throws IOException  */public static void main(String[] args) throws IOException, SAXException {Smooks smooks = new Smooks("xslConfig.xml");Source xmlSrc = new StreamSource(Xml2XmlXslTest.class.getResourceAsStream("/input.xml"));Result xmlRst = new StreamResult(System.out);smooks.filterSource(xmlSrc, xmlRst);}}

?

?

?

热点排行