在IntelliJ中使用XSLT2.0
IntelliJ从10.5开始支持XSLT2.0,不过需要在项目中添加Saxon的库,本文介绍配置过程。
首先是下载IntelliJ社区版:
http://www.jetbrains.com/idea/
下载完成后,启动IntelliJ,创建新项目:
选择"Create project from scratch":
将项目命名为xslt2demo:
最后点Finish:
这样就新建了一个名为xslt2demo的项目,接下来新建两个文件,分别为demo.xsl和text.xml:



text.xml的文件内容为:
<?xml version="1.0"?><PLAY> <TITLE>The Tragedy of Othello, the Moor of Venice</TITLE> <TEXT> <P>ASCII text placed in the public domain by Moby Lexical Tools, 1992.</P> <P>SGML markup by Jon Bosak, 1992-1994.</P> <P>XML version by Jon Bosak, 1996-1999.</P> <P>The XML markup in this version is Copyright © 1999 Jon Bosak. This work may freely be distributed on condition that it not be modified or altered in any way. </P> </TEXT></PLAY>
demo.xsl:
<?xml version="1.0" encoding="iso-8859-1"?><xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/"> <wordcount> <xsl:for-each-group group-by="." select="for $w in //text()/tokenize(., '\W+')[.!=''] return lower-case($w)"> <xsl:sort select="count(current-group())" order="descending"/> <word word="{current-grouping-key()}" frequency="{count(current-group())}"/> </xsl:for-each-group> </wordcount> </xsl:template></xsl:stylesheet>这个xsl将用来生成对text.xml的字母统计报告, 里面用到了XPATH 2.0语法,此时我们用IntelliJ来执行试试看:

第一次执行时,需要设置关联的xml:

执行后查看终端输出:

发现IntelliJ报错,不支持XSLT 2.0的语法:
Unsupported XSL element 'http://www.w3.org/1999/XSL/Transform:for-each-group
接下来我们需要下载Saxon,用于支持XSLT2.0:
http://sourceforge.net/projects/saxon/files/Saxon-HE/9.4/

下载名为"SaxonHE9-4-0-3J.zip"的文件。其中J代表为Java包。下载后解压,包含两个文件:

我们要将saxon9he.jar加入到IntelliJ中的项目依赖中去。打开项目的设置:

选择Modules -> Dependencies -> Add -> Single-Entry Module Library

然后选择saxon9he.jar:

加入依赖后,重新执行demo.xsl:

执行输出如下:

此时查看XSLT Output:

可以看到处理结果。
参考资料
[1] http://blogs.jetbrains.com/idea/2011/09/xslt-20-in-idea-105/
[2] http://p2p.wrox.com/xslt/80731-grouping-xslt-report.html
[3] http://stackoverflow.com/questions/3765998/add-a-properties-file-to-intellijs-classpath
[4] XSLT 2.0 and XPath 2.0 Programmer's Reference (Programmer to Programmer) - http://www.amazon.com/XSLT-XPath-Programmers-Reference-Programmer/dp/0470192747/ref=sr_1_1?ie=UTF8&qid=1338605274&sr=8-1