在xmlspy中使用java的xslt转换

    技术2022-05-11  143

    在xmlspy中使用java的xslt转换.

    我喜欢在xmlspy中来写xml, xsl, xsd, 并且用xmlspy自带的xslt工具或者利用msxml来查看xslt转换结果. 在实际使用中发现尽管xmlspy的xslt有些小bug, 但是它能提供具体的错误位置, 排错很方便. Java下

    有xalan和saxon都可以做xslt转换.

    saxon除了支持标准的xslt1.0, 还部分支持xslt2, 其中多文档输出特别有用. 下载地址:saxon.sf.net. 解压缩后在xmlspy中配置如下:java -jar C:/java/lib/saxon7-3-1/saxon7.jar -o %2 %1 %3

    xalan已经内置在jdk1.4中, 但是没有提供命令行调用方式, 这里简单包装如下:

    import javax.xml.transform.*;

    /** * command line xslt using jdk1.4 * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: </p> * @author not attributable * @version 1.0 */

    public class XSLT {  private static final String USAGE = "xslt 1.0: command line xslt for jdk1.4/n/n"    +"command line usage: java -jar xslt.jar xmlfile xslfile outfile/n"    +"xmlspy exteral xslt setup: java -jar c://java//lib//xslt.jar %1 %3 %2/n";

      public XSLT() {  }

      public static void transform(Source xml, Source xsl, javax.xml.transform.Result out)  throws Exception{    TransformerFactory.newInstance().newTransformer(xsl).transform(xml,out);  }

      public static void main(String[] args) {    if (args.length<2){      System.out.println(USAGE);      return;    }    Source xml = new javax.xml.transform.stream.StreamSource(args[0]);    Source xsl = new javax.xml.transform.stream.StreamSource(args[1]);    Result out = null;    if (args.length>2)      out = new javax.xml.transform.stream.StreamResult(args[2]);    else      out = new javax.xml.transform.stream.StreamResult(System.out);    try{      transform(xml, xsl, out);    }catch(Exception e){      System.out.println("error: "+e.getMessage());    }  }

    }

    建议用jbuilder的jar builder wizard打包成xslt.jar. xmlspy中配置如下:java -jar c:/java/lib/xslt.jar %1 %3 %2

    在运行速度上, 感觉差别不大. 还是满快的 :)


    最新回复(0)