利用XSLT 2.0成批处理XML

http://tech.ddvip.com   2007年10月25日    社区交流

内容摘要:XSLT 的一个常见问题是只能接受一个 XML 文件作为输入。您可以使用跨平台的 Java 工具创建 XML 目录列表,然后使用 XSLT 处理目录列表中的每个文件。这篇技巧介绍了这样一种工具的安装和使用,以及用于处理目录列表中的多个文件的相应 XSL。

  大多数人都希望 Saxon 这样的 XSLT 处理程序能使用多个输入文件。常常会遇到这样的问题,需要将一个目录中的 XML 文件转换成 HTML。可以对这些文件分别使用 Saxon,但是如果最后希望生成一个文件包含所有那些 HTML 文件的索引,那该怎么办呢?

  您需要的是目录列表的 XML 版本。这样就可以将这个 XML 文件作为 XSLT 的惟一输入文件,并用 XSLT 处理每个文件。如果 XSLT 能够直接进行目录处理就很完美了。不幸的是,尽管 XSLT 很强大,特别是 XSLT 2.0,但这种语言却没有目录操作。

  HXDLG 来帮忙!

  在网上冲浪的时候,我从 SourceForge 上发现了一个不起眼的小 Java 程序,HTML/XML Directory List Generator (HXDLG)(请参阅 参考资料)。HXDLG 的一项功能就是创建目录列表的 HTML 或 XML 表示。我下载了该工具,并从命令行运行清单 1 所示的语句。

  清单 1. 使用 HXDLG 创建 XML 目录的代码

java -jar hdlg.jar XML
  /Users/jherr/Projects/ibm_xml_tips/filelist/testfiles/
  /Users/jherr/Projects/ibm_xml_tips/filelist/files.xml

  这个程序有三个参数。第一个参数是输出类型,即 XML 或者 HTML。第二个是目录路径,第三个是输出 XML 文件的路径。结果如清单 2 所示。

  清单 2. XML 格式的目录

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hdlg:filesystem SYSTEM
 "http://www.hdlg.info/XML/filesystem.dtd">
<hdlg:filesystem
xmlns:hdlg="http://www.hdlg.info/XML/filesystem">
  <hdlg:folder name="testfiles"
   url="file:/Users/jherr/Projects/ibm_xml_tips/filelist/testfiles/">
   <hdlg:file name="test1.xml" size="179"
     type="unknown"
 url="file:/ibm_xml_tips/filelist/testfiles/test1.xml">
   </hdlg:file>
   <hdlg:file name="test2.xml" size="181"
     type="unknown"
 url="file:/ibm_xml_tips/filelist/testfiles/test2.xml">
   </hdlg:file>
   <hdlg:file name="test3.xml" size="181"
     type="unknown"
 url="file:/ibm_xml_tips/filelist/testfiles/test3.xml">
   </hdlg:file>
  </hdlg:folder>
</hdlg:filesystem>

来源:ibm    作者:Jack Herrington    责编:豆豆技术应用

正在加载评论...